社区
进程/线程/DLL
帖子详情
关于临界区,临界区是避免两个线程同时调用同一段代码还是同一个变量?
chengwei_xj
2003-09-09 03:47:04
1.如题.
2.如果在两个不同的线程中设置同一个临界区,但是临界区中的代码不同(但是都对同一个全局变量进行操作),请问,此时,临界区有效吗?
注:不同的线程是指不同的线程函数.
...全文
529
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
两个
线程
同时
调用
一个函数会出现什么情况?
最近在研究多
线程
,然后突然想到如果
两个
线程
同时访问一个函数的话,要不要加锁呢,加锁怎么加,不加又怎样这样的问题..然后去网上找了些帖子学习学习...... 上面的
代码
明显执行串了!!!! 函数本身只是
代码
,
代码
是只读的,无论多少个
线程
同时
调用
都无所谓,因为是只读嘛.但是函数里面总要用到暑假 ,如果数据属性
线程
级别(比如函数形参-->局部
变量
-->存在栈上-->每个
线程
...
【Window】
线程
同步方式1——
临界区
(关键
代码
段)
文章目录1
临界区
1.1 简介1.2 程序调度法则1.3
线程
同步问题2
临界区
操作原语2.1 定义全局的锁CRITICAL_SECTION2)InitializeCriticalSection3)EnterCriticalSection和LeaveCriticalSection4) DeleteCriticalSection3 应用和举例 1
临界区
1.1 简介
临界区
,也称为关键
代码
段,工作在用户方式下。它是指一个小
代码
段,在
代码
能够执行前,它必须独占对某些资源的访问权。
临界区
(Critical S
C#编程,资源加锁Lock
避免
多
线程
时同时操作同一
变量
造成数据错误的简单用法。
lock 的目的: 不想在自己使用的时候别人也使用这段
代码
。体现在多
线程
情况下,只允许当前
线程
执行该
代码
区域,其他
线程
等待直到该
线程
执行结束;这样可以多
线程
避免
同时使用某一方法造成数据混乱。 一般定义如下: private static readonly object obj = new object(); lock(obj) { '''
代码
块 } 用法 当我们使用
线程
的时候,效率最高的方式当然是异步,即各个
线程
同时运行,其间不相互依赖和等待。但当不同的
线程
都需要访问某个资源的时候,就需要同步机制了。
多个
线程
同时
调用
一个单例bean的
同一个
方法的时候,会出现什么情况??
多个
线程
同时
调用
一个单例bean的
同一个
方法的时候,会出现什么情况??
C++
线程
同步之
临界区
CRITICAL_SECTION
一、
临界区
临界区
又称关键
代码
段,指的是一小段
代码
在
代码
执行前,它需要独占一些资源。程序中通常将多
线程
同时访问的某个资源作为
临界区
,需要定义一个CRITICAL_SECTION类型的
变量
,然后
调用
InitializeCriticalSection函数对
变量
进行初始化 例子: 定义一个全局的锁 CRITICAL_SECTION的实例和一个静态全局
变量
CRITICAL_SECTIO...
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章