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

黑龙江专业建站公司怎么注册企业邮箱

黑龙江专业建站,公司怎么注册企业邮箱,网站空间3个g多少钱,网站建设服务开税率多少的票1. 线程共享数据会造成什么问题? 1.1 读写不一致 多线程读不会造成数据变动,所以没有问题。只要有一个线程设计修改数据,就会导致数据共享出现问题,简单的是数据不一致,严重的是程序访问已经释放的内存,造…

 1. 线程共享数据会造成什么问题?

1.1 读写不一致

多线程读不会造成数据变动,所以没有问题。只要有一个线程设计修改数据,就会导致数据共享出现问题,简单的是数据不一致,严重的是程序访问已经释放的内存,造成程序崩溃。

1.2 顺序不一致(竞态条件)

1.2.1 为什么要有顺序性问题?

因为,读写操作的不同,不同的访问顺序是是十分重要的。

1.2.2  造成顺序性问题的原因?

因为,需要改动多处数据,造成必须要保证改动多出数据时每一步的连续(一个线程多处改动,多次改动,都必须抢占cpu,不能允许其他线程在这个过程被其他线程修改)

1.2.3 如何防止恶性的条件竞争?

什么是恶性竞争?可以理解为破坏程序,导致程序崩溃的,读写不一致程序还能运行,如果释放指针,访问已经释放的地址导致内存崩溃。

防止恶性竞争的方式有:

  1. 修改数据时,每一步动作不被其他线程抢占。(常见的有:互斥锁)
  2. 使用事务,也就是原子操作。(mysql的事务,redis中lua脚本)

2. 互斥方式保护共享数据

2.1 互斥锁

通过std::mutex,然后调用lock和unlock函数。但是通过unlock,则需要在每一个访问共享数据的线程上都调用unlock,同时也要注意抛出异常的问题,所以采用了基于RAII机制lock_guard()函数,构造时加锁,析构时释放锁。

缺点:一旦有暴漏的引用或者指针,那么访问加锁后,仍然能够被访问(可以推导出,加锁并不是锁内存,很可能就是锁变量的访问)。就是:你要访问共享变量,你就需要对所有的访问共享变量的环节都互斥锁,进行访问,不然的话如果通过指针或者引用去访问内存时,是无法解决这个问题的。

class some_data
{int a;std::string b;
public:void do_something();
};class data_wrapper
{
private:some_data data;std::mutex m;
public:template<typename Function>void process_data(Function func)  {std::lock_guard<std::mutex> l(m);func(data);   1.受保护的线程安全的函数,如果多线程访问该函数的时候,就一定线程安全,因为使用了互斥锁。}
};some_data* unprotected;void malicious_function(some_data& protected_data)
{unprotected=&protected_data;
}data_wrapper x;void foo()
{x.process_data(malicious_function);   2.如果你某天添加功能,以引用或者指针的方式向外部调用恭喜那个变量,这个时候就是非线程安全了,因为malicious_function是非线程安全的。unprotected->do_something();   以无保护方式访问本应受保护的共享数据
}

http://www.dtcms.com/a/510694.html

相关文章:

  • 做门户网站好还是论坛好电商网站设计与制作
  • 用html做网站搜索框网站收录很少却有排名
  • 庆阳网站设计报价wordpress html5 模板下载
  • 广州市网站建设企业濮阳团购网站建设
  • 大淘客网站免费空间网站建设教程小说
  • jfinal网站开发失物招领网站开发项目需求分析
  • 门户网站搭建软件哪里可以学网站建设
  • 在哪个公司建设网站好WordPress解析域名
  • 关于网站建设的报告免费设计自己名字头像
  • php网站开发哪个培训学校好学校网站建设注意点
  • 秦皇岛市建设局网站关于装配式专家南京做网站优化哪家好
  • 外国风格网站建设官网百度怎么注册店面地址
  • 福州台江区网站建设廊坊网站推广排名
  • 呼市做无痛人流z首大网站凡客家居
  • 柳州网站建设psn118营销是做什么
  • 如何把网站上传到网上能源网站建设方案
  • 廊坊网站制作怎么做服务网站
  • 58网站建设多少钱手机怎么创建网页链接
  • 濮阳网站建设pc网站还有必要做吗
  • 做网站签合同移动网站设计上机考试
  • 电商网站开发可行分析网站开发的技术分类
  • 济南区网站开发怎样手机微信登陆网站
  • 互站网怎么样网站差异
  • 建个网站需要多少钱?做英文网站建设
  • 做公众号用什么网站吗海口建设网站建设
  • 株洲建设局网站页面设置标签wordpress
  • 贷款网站模版网站建设文档模板
  • 网站用哪个软件做最有效的线下推广方式
  • 小说网站怎么做seo三种人不适合编程
  • 深圳外贸建站网络推广联客易东营志愿服务网