社区
进程/线程/DLL
帖子详情
关于临界区,临界区是避免两个线程同时调用同一段代码还是同一个变量?
chengwei_xj
2003-09-09 03:47:04
1.如题.
2.如果在两个不同的线程中设置同一个临界区,但是临界区中的代码不同(但是都对同一个全局变量进行操作),请问,此时,临界区有效吗?
注:不同的线程是指不同的线程函数.
...全文
478
18
打赏
收藏
关于临界区,临界区是避免两个线程同时调用同一段代码还是同一个变量?
1.如题. 2.如果在两个不同的线程中设置同一个临界区,但是临界区中的代码不同(但是都对同一个全局变量进行操作),请问,此时,临界区有效吗? 注:不同的线程是指不同的线程函数.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fuxf
2003-12-02
打赏
举报
回复
临界区是避免两个线程同时使用的是同一个变量
临界区中的代码不同(但是都对同一个全局变量进行操作),此时,临界区有效!!!!!!!!!!
chengwei_xj
2003-12-02
打赏
举报
回复
谢谢大家了
xiaohyy
2003-09-16
打赏
举报
回复
1、代码,保证该代码段以原子操作执行
2、有效
JoeRen
2003-09-16
打赏
举报
回复
何必管他是代码还是变量呢?你需要知道的是它的工作原理。然后,当你需要保护代码的时候自然有保护代码的方法,需要保护变量的时候自然有保护变量的方法。一切存乎于心
关于楼上异常的问题,通常是这样解决:
try
{
EnterCriticalSection(&m_Lock);
...
}
catch(...)
{
LeaveCriticalSection(&m_Lock);
throw;
}
LeaveCriticalSection(&m_Lock);
或者(这是推荐的方法!)定义一个类,用构造/析构来保证安全。
chengwei_xj
2003-09-16
打赏
举报
回复
up
akun
2003-09-16
打赏
举报
回复
1. 不是同一段代码,而是多处同步临界区内的代码~~~~2 个 甚至 多个!!!!
司马青衫依旧
2003-09-16
打赏
举报
回复
当然是保护的是代码呀。
wenddy112
2003-09-16
打赏
举报
回复
都是达人在线啊。
vcforever
2003-09-16
打赏
举报
回复
俺想再补充一下临界区是避免多个线程访问同一个共享资源所引起的冲突!
共享资源包括:
1、变量
2、代码
3、一块内存
4、一个数据结构
5、一个文件
或任何其他具有“使用之排他”性的东西!
呵呵……这就是俺对俺前面说的一点补充!
希望对楼主有所帮助!
NowCan
2003-09-15
打赏
举报
回复
1、代码,但这代码一般是用来读写某变量的,否则也没必要了。
2、有效,进程内任意处有效,跨进程无效。
vcforever
2003-09-09
打赏
举报
回复
1、变量
2、有效
注意:在你用临界区时,一定要注意异常的发生,例如
EnterCriticalSection(&m_Lock);
.........
.........
LeaveCriticalSection(&m_Lock);
如果在EnterCriticalSection和LeaveCriticalSection之间的代码有异常发生
那么这次访问永远也不回退出临界区,会造成死锁问题,所以一定要作好异常处理
叶子哟
2003-09-09
打赏
举报
回复
无所谓,只要保护那个变量就可以了
newsb
2003-09-09
打赏
举报
回复
1、临界区可以保护一段代码,当然包含了一个变量
2、可以,临界区也可以相当于互斥量,可以做线程的同步
chengwei_xj
2003-09-09
打赏
举报
回复
》楼上
也就是在两个不同的线程函数中使用同一个临界区变量。
清泉ys
2003-09-09
打赏
举报
回复
避免两个线程同时调同一个变量
两个不同的线程中设置同一个临界区??
Oversense
2003-09-09
打赏
举报
回复
1.变量
2.有效
kukafei
2003-09-09
打赏
举报
回复
是同步同一段代码
chengwei_xj
2003-09-09
打赏
举报
回复
up
21 内核开发-
临界区
及
临界区
代码
段判断
临界区
是计算机系统中的
一段
代码
,在任何时刻只能被一个
线程
执行。
临界区
的目的是防止多个
线程
同时访问共享资源,从而
避免
数据损坏或其他问题。互斥:在任何时刻,只能有一个
线程
执行
临界区
中的
代码
。有限等待:一个
线程
不能无限期地等待进入
临界区
。如果
临界区
被其他
线程
占用,等待的
线程
必须在有限的时间内获得访问权。
临界区
代码
指的是
一段
代码
路径,
代码
或者系统中必须同时满足以下
两个
条件才能称得上是
临界区
代码
条件一:
代码
路径可能是并发的,也就是说,存在它可以并行运行的可能性。并且。
临界区
保护:保护并发进程中共享
变量
的关键
通过使用互斥锁、信号量和条件
变量
等
临界区
保护机制,我们可以有效地保护并发进程中的共享
变量
,
避免
数据竞争和不确定的结果。在实际应用中,根据具体的需求和场景选择适当的
临界区
保护机制非常重要,以确保并发访问的正确性和性能。
临界区
保护机制的目标是在任意时刻只允许一个进程或
线程
进入
临界区
,以确保共享资源的正确访问。这样可以确保在任意时刻只有一个
线程
可以进入
临界区
,从而保护共享
变量
的一致性。这样可以确保在任意时刻只有一个
线程
可以进入
临界区
,从而保护共享
变量
的一致性。获取锁,然后执行
临界区
代码
,最后
调用
。
多
线程
之
临界区
*一般情况下需要创建多个
线程
来提高程序的执行效率,但是多个
线程
同时运行的时候可能
调用
线程
函数,在多个
线程
同时对一个内存地址进行写入操作,由于CPU时间调度的问题,写入的数据会被多次覆盖,所以要使
线程
同步。 就是说,当有一个
线程
对文件进行操作时,其它
线程
只能等待。可以通过
临界区
对象实现
线程
同步。
临界区
对象是定义在数据段中的一个CRITICAL_SECTION结构,Windows内部使用这个结构记录
操作系统实验——主
线程
创建
两个
子
线程
,
两个
子
线程
互斥使用临界资源
/*具体操作过程同实验?,在 Microsoa Visual C++ 6.0 环境下建??个MFC?持的控制台?程?件,编 写C程序,在主
线程
中使?Ini2alizeCri2calSec2on()初始化
临界区
,然后建?
两个
?
线程
,在
两个
?
线程
中使?全局
变量
count 的前、后分别使?EnterCri2calSea2on()进?
临界区
LeaveCri2calSec2on()退出临 界区,等
两个
?...
【Window】
线程
同步方式1——
临界区
(关键
代码
段)
文章目录1
临界区
1.1 简介1.2 程序调度法则1.3
线程
同步问题2
临界区
操作原语2.1 定义全局的锁CRITICAL_SECTION2)InitializeCriticalSection3)EnterCriticalSection和LeaveCriticalSection4) DeleteCriticalSection3 应用和举例 1
临界区
1.1 简介
临界区
,也称为关键
代码
段,工作在用户方式下。它是指一个小
代码
段,在
代码
能够执行前,它必须独占对某些资源的访问权。
临界区
(Critical S
进程/线程/DLL
15,467
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章