c++多线程安全问题(c++多线程处理)

本文主要介绍c多线程安全问题(c多线程处理),下面一起看看c多线程安全问题(c多线程处理)相关资讯。
锁定的关键区域应该尽可能紧凑和小。
问题分析:
当一个线程在临界区执行时,其他所有试图进入临界区的线程都会被阻塞,所以我们要保证临界区尽可能小。举个例子,
void callhome(字符串消息){ std:: lock _ guardstd::mercex lock(mu);//临界段开始-保护std:: cout readfifthousandrecords;cout 线程和this _ thread:: get _ id 说 消息endl}// lock_guard对象被销毁,互斥mu被释放
readfifythousandrecords方法是一个只读操作,如果它从一个数据库中花费了10秒钟,就没有理由在锁中执行它。
如果读取5万条记录,其他所有线程都会被这个不必要的时间阻塞。会严重影响程序的执行效率。
正确的做法应该是只把std : : cout放入临界区,比如
void callhome(字符串消息){ readfifythosandrecords;//唐 不需要在临界区,因为它 s一个只读操作std:: lock _ guardstd::mercex lock(mu);//临界区开始-保护std:: cout cout 线程和this_thr::get _ id 说 消息endl}// lock_guard对象被销毁,互斥mu被释放
标签:
关键线程
了解更多c多线程安全问题(c多线程处理)相关内容请关注本站点。

电脑重装系统按键盘怎么没反应(电脑重装系统鼠标键盘没反应怎么弄)
电脑安装固态硬盘有什么好处,电脑固态硬盘有甚么好处
苹果4怎么换卡视频,苹果11换卡槽教程视频
微信发朋友圈仅一人可见对方知道吗(设置朋友圈仅一人可见对方知道吗)
13promax哪个颜色值得入手(iphone13promax哪个颜色卖的好)
c++多线程安全问题(c++多线程处理)
苹果m2平板多大尺寸(苹果m2芯片会用在平板上吗)
小米2a秋叶随风的44怎么刷,秋叶随风 小米note twrp怎么刷
htc816虚拟按键怎么删除,求大神怎么把手机下面的虚拟按键去掉
iphone13回退操作(ios13怎么退回以前版本)
苹果m1如何恢复出厂设置(苹果m1还原17个步骤)
华硕显卡系列介绍
双硬盘系统安装方法(双硬盘安装系统教程)
2.5寸7mm固态硬盘
iphone手机插电脑上没反应(苹果手机插电脑上没反应怎么办)
win10重置不动是怎么回事(window10重置不了,修复不了怎么办-)
南京数据分析师事务所,南京那家项目数据分析事务所好
todesk解除远程控制(todesk远程软件怎么退出)
笔记本散热风扇不转是什么原因导致的(笔记本散热风扇运转不正常)
u盘0×80070570文件或目录损坏且无法读取(u盘出现文件或目录损坏无法读取怎么办)