社区
进程/线程/DLL
帖子详情
请各位帮我看看这个问题怎么做?
zhangpen
2008-06-12 11:58:44
两个线程,在一个线程中改变全局变量的值,另一个线程则一直判断这个全局变量的值是否有改变,这个判断全局变量是否有改变的线程怎么实现呀,请高手帮忙解决!!!能否给代码?
...全文
60
8
打赏
收藏
请各位帮我看看这个问题怎么做?
两个线程,在一个线程中改变全局变量的值,另一个线程则一直判断这个全局变量的值是否有改变,这个判断全局变量是否有改变的线程怎么实现呀,请高手帮忙解决!!!能否给代码?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gaoteng1984
2008-07-20
打赏
举报
回复
1.轮询法:
while(true)
{
if (globalVar == desiredValue)
{// Do something...
}
}
缺点:占CPU太多,单核下会CPU100%
2.轮询+Sleep法:
while(true)
{
if (globalVar == desiredValue)
{// Do something...
}
Sleep(cycle); // cycle为1000时表示睡眠1秒。
}
缺点:响应不够及时,可能造成cycle毫秒的延迟。
3. 线程同步法:
子线程:
globalVar = GetValue();
SetEvent(hEvent);
主线程:
WaitForSingleObject(hEvent, INFINITE);
printf("Value is %d\n", globalVar); // 使用globalVar.
优点:不使用轮询,主线程等待期间不占用CPU,是“标准”的做法。
wltg2001
2008-06-13
打赏
举报
回复
我觉得如果仅仅是为了同步而检测全局变量的值的话,倒不如用内核对象和WaitForSingleObject
wooyz
2008-06-13
打赏
举报
回复
就是同步锁的原理。可以考虑使用同步锁来实现。
例如线程1加锁,线程2用WaitSingleObject等着,一旦锁别释放,则往下执行!
不过,这么作会使得两线程耦合度太高,可能很容易不小心就搞死锁了:)
用007的方法发消息,比较省事明了。
liyinlei
2008-06-12
打赏
举报
回复
可以利用定时器循环检测全局变量。
比较好的应该是 改变全局变量的那个线程发消息通知另一个线程。PostThreadMessage
alfwolf
2008-06-12
打赏
举报
回复
这个判断全局变量是否有改变的线程怎么实现呀
这个线程可以循环检测你的那个全局变量,在工作循环中加上就可以了。
yjgx007
2008-06-12
打赏
举报
回复
改变后,给另一个线程发消息不就行了(用消息或另一个标志判断).
renxianfu
2008-06-12
打赏
举报
回复
仅仅就这个问题来说,在判断线程必须备份一份全局变量,每次循环把备份的和全局的作比较,不相等就有改变,这种效率很低
还是按照楼上几位同志说的搞吧
renxianfu
2008-06-12
打赏
举报
回复
仅仅就这个问题来说,在判断线程必须备份一份全局变量,每次循环把备份的和全局的作比较,不相等就有改变,这种效率很低
还是按照楼上几位同志说的搞吧
你以为在
做
的是微服务?不!你只是
做
了个比单体还糟糕的分布式单体!
昨晚睡觉前,顺手撸了几个...各位看官,
看看
你们公司是不是也犯了这样的错误? 分布式单体为什么不好 先思考一个
问题
:从单体改造到微服务的时候,你们是不是按这样的步骤来的? 确定业务领域,拆分存储,定义各微服
面试官问我new Vue阶段
做
了什么?
本篇录入吊打面试官专栏,希望能祝君拿下Offer一臂之力,各位看官感兴趣可移步。这段时间面了很多家公司,被问到的题我感觉不重复不止100道,将会挑选觉得常见且有意义的题目进行分析及回答。有人说面试造火箭,进去...
技术团队如何
做
技术规划?
技术团队如何
做
技术规划 3W法则(也叫黄金圈法则):为什么要
做
?...分治法我们需要学会把复杂的
问题
拆解成每个细小的
问题
,参考阿里大牛的方法论,把技术规划拆解成图1中的4个层次来看: 当前
问题
每个团队在不...
做
硬件,真的没前途吗?
看看
资深工程师是怎么说的
如果你正在对硬件工程师的未来发展感到迷茫,不妨
看看
这篇文章。或解惑,或共勉。一位项目经理带着一名硬件工程师和一名软件工程师一同坐车去参加研讨会,结果汽车在半路抛锚,于是三人就“如何修理汽...
Raptor-求一个正整数各位数字之和(数组法)
利用数组将这个数各位数字存储起来,具体怎么
做
? 比如考虑一个数组为 a,数组 a 用来存储正整数n 的各位数字,如果存储好了,那么正整数 n 各位数字之和就转化为数组 a 的元素求和。又因为正整数 n 的位数不固定,...
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章