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

发布时间:2024-03-30
本文主要介绍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多线程处理)相关内容请关注本站点。
上一个:履带板厂家告诉你什么是履带板
下一个:磁座钻的磁力的作用

横流式冷却塔与逆流式冷却塔有哪些不同?
伊顿VICKERS电磁阀样本展示
欺诈发行股票罪可以追究什么刑事责任
烘干虾设备采用微波烘烤技术入味保品质
电工工资高吗?电工工资怎样?电工工资多少好吗?
1206W4J068JT5E,J 1206 6.8R现货购买,厚声1206 6.8Ω ±5% 1/4W
水泥量水器​用途
离婚有不分财产的情况吗?
Leica AT500, AT403 0.5“ RFI反射球技术参数
七个建筑工程防渗漏管控要点