当前位置: 首页 > news >正文

给网站做认证广州的软件开发公司

给网站做认证,广州的软件开发公司,曲靖网站制作一条龙,济南做网站个人非安全string 说明 c标准未规定stl容器以及字符串的线程安全性&#xff0c;故std::string在多线程下是不安全的。 代码示例 #include <iostream> #include <stdio.h> using namespace std;std::string *sp nullptr;void Read() {for(int i 0; i < 100000;…

非安全string

说明

c++标准未规定stl容器以及字符串的线程安全性,故std::string在多线程下是不安全的。

代码示例

#include <iostream>
#include <stdio.h>
using namespace std;std::string *sp = nullptr;void Read()
{for(int i = 0; i < 100000; i++){std::string  s = "";s = *sp;}
}void Write()
{for(int i = 0; i < 100000; i++){*sp = std::to_string(i);}
}int main()
{while(1){sp = new std::string("string test");std::thread t1(Read);std::thread t2(Write);t1.join();t2.join();delete sp;sp = nullptr;}return 0;
}

安全string

安全string类封装

  • 使用std::recursive_mutex递归锁保证string多线程下的读写安全;

关于std::recursive_mutex,可以查看:https://blog.csdn.net/www_dong/article/details/132197541

class TSString 
{typedef std::lock_guard<std::recursive_mutex> RecursiveGuard;mutable std::recursive_mutex rmutex;   // 注意增加mutable修饰std::string str_;public:TSString() {}TSString(const TSString& str){Set(str.Get());}TSString& operator= (const TSString& str){if(this == &str)return *this;Set(str.Get());return *this;}void Set(const char* str){RecursiveGuard mtx(rmutex);if(NULL == str){str_ = "";}else{str_ = str;}}void Set(const std::string& str){RecursiveGuard mtx(rmutex);str_ = str;}std::string Get() const{std::string str;{	RecursiveGuard mtx(rmutex);str = str_;}return str;}int Compare(const char* str) const {if(NULL == str)return 1;RecursiveGuard mtx(rmutex);return str_.compare(str);}int Compare(const std::string& str) const{return Compare(str.c_str());}int Compare(const TSString& s) const{return Compare(s.Get());}	
};

代码示例

TSString *sp = nullptr;void Read()
{for(int i = 0; i < 5000; i++){TSString s;s.Set("");s = *sp;}
}void Write()
{for(int i = 0; i < 5000; i++){sp->Set(std::to_string(i));}
}int main()
{while(1){TSString s;s.Set("string test");sp = new TSString(s);std::thread t1(Read);std::thread t2(Write);t1.join();t2.join();delete sp;sp = nullptr;}return 0;
}
http://www.yayakq.cn/news/954728/

相关文章:

  • 做网站之前的前期wordpress 安卓教程
  • 建设新网站北京网站建设及app
  • 怎么自己编程做网站wap网站制作模板
  • dede手机网站仿站html网站开发 工具
  • 哪个网站做外链视频好刷leetcode对网站开发有用吗
  • 备案网站内容简介惠民县建设局官方网站
  • 赤峰网站建设建站公司企业邮箱怎么申请入口
  • 优秀企业站网站建设网站一般多少钱
  • 做网站和做软件哪个有发展手机h5模板
  • 知名的建站公司专门做2次元图片的网站
  • 卖印花图案设计网站成都建材网站建设
  • 网站可以制作ios广州哪个区最好
  • 高端网站建设 骆诗学网页设计与制作需要什么软件
  • 营销型网站(易网拓)2021东莞解封最新消息
  • 品牌网站建设哪家好邢台建设专业网站
  • 做废铝的关注哪个网站好长春建站免费模板
  • 网站制作软件dw的全称上海全国关键词排名优化
  • 中国建设银行校园招聘网站网上商城网站建设意义
  • 网站建设综合实训报告石家庄seo网络推广
  • 简单个人网站制作wordpress类别链接
  • 自主建站平台酷家乐装修设计软件app下载
  • 谁做的12306网站网站建设w亿玛酷1负责
  • 自助个人网站珠海摥园网站建设
  • 个人网站设计论文摘要软文推广系统
  • 建设书法网站的主题是大连网络公司哪家好
  • 腾讯网站建设专家北京网站首页排名公司
  • 宝安网站建设多少钱中山网站外包
  • 新网站如何做百度百科牡丹江市建设工程交易中心网站
  • 意识形态建设专题网站最新的电商平台
  • 售卖网站建设实验报告高端室内设计公司起名