社区
Windows SDK/API
帖子详情
关于临界区变量的疑问?
mexiang
2010-06-09 02:22:13
DELPHI里线程之间用临界区变量来进行线程之间的数据保护,我的疑问是,临界区里的数据也是进行CPU时间轮换的吗?一般一个线程的CPU时间是如何进行分配的。如果临界区的数据执行时间远远大于CPU轮换时间,会不会导致其他线程一直死锁状态。
...全文
153
4
打赏
收藏
关于临界区变量的疑问?
DELPHI里线程之间用临界区变量来进行线程之间的数据保护,我的疑问是,临界区里的数据也是进行CPU时间轮换的吗?一般一个线程的CPU时间是如何进行分配的。如果临界区的数据执行时间远远大于CPU轮换时间,会不会导致其他线程一直死锁状态。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
日立奔腾浪潮微软松下联想
2010-06-09
打赏
举报
回复
临界区只是保证其中的代码串行化(不能重入),并非不能在中间切换线程。
nevercomenevergogo
2010-06-09
打赏
举报
回复
从互斥角度看,如果一个线程获得某个资源而不释放,此时其他线程若想获得该资源,这些线程均会处于阻塞状态。假设第一个线程永远不释放资源,那么就发生了死锁。
即使cpu轮询这几个线程,这跟死锁应该不会有直接关系。
CPU轮询这几个线程,只是说有机会给每个线程以CPU资源来运行,至于你的运行时阻塞还是非阻塞,cpu不关心的。
lengfengxiaodao
2010-06-09
打赏
举报
回复
一般一个线程的CPU时间是如何进行分配的,
-----------------------------------------
这是由操作系统决定的,WINDOWS用的是抢先式的分配方法,
单核CPU下, 每次只可能有一个线程在运行,线程运行后,才有可能进入临界区,如果别的线程临界区没有退出,则要进入临界区的线程处于等待状态。
临界区在进入,退出状态切换时也是需要时间的,但是都很小的,一般不考虑
如果临界区的数据执行时间远远大于CPU轮换时间,会不会导致其他线程一直死锁状态。
------------------------------------------------------
只有你的其中一个线程进入了没有退出,其他线程永远无法进入的
slmax1
2010-06-09
打赏
举报
回复
给你顶一下,等高手来理论性回答
临界区
保护:保护并发进程中共享
变量
的关键
通过使用互斥锁、信号量和条件
变量
等
临界区
保护机制,我们可以有效地保护并发进程中的共享
变量
,避免数据竞争和不确定的结果。在实际应用中,根据具体的需求和场景选择适当的
临界区
保护机制非常重要,以确保并发访问...
临界区
操作的原子性
临界区
保证当前进入
临界区
的线程能够完整执行完
临界区
中保护的代码不被打断,但是当时我一直对
临界区
有一个
疑问
,即
临界区
自己的代码中如何实现这种特性,也就是一个线程调用调用进入
临界区
的函数,这个函数...
解决
临界区
(互斥)的软件方法-Dekker算法和Peterson算法
—为了控制两个进程互斥进入
临界区
,可以让两个进程轮流进入
临界区
。 —当一个进程正在
临界区
执行时,另一个进程就不能进入
临界区
,而在
临界区
外等待。 1.为何是“强制交替”? Turn=0时,无论CS空闲与否,即使P1...
操作系统-实现
临界区
互斥的基本办法
1、软件实现方法 算法一:单标志法(违背空闲让进) 设两个进程P0和P1,以及一个标志量(turn)。 turn的初始化 turn = 0; 规定turn = 0 时,允许P0访问
临界区
;...
临界区
代码段 //
临界区
turn =...
软件实现
临界区
互斥的方法总结思考(四种算法的递进推导)
核心思想:设置一个公共整形
变量
turn,用于指示被允许进入
临界区
的进程编号。若turn = 0, 表示允许P0进入
临界区
。 OK,到这里肯定很容易想到一个问题,谁来改变turn?这里的turn像是一把锁,控制着进程的进入。 如果...
Windows SDK/API
1,183
社区成员
22,335
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章