线程A终结通知线程B,用变量好还是用核心对象好
线程A结束通知线程B,用变量好还是用核心对象好?
看一个程序的设计是:
线程A执行:
bSendData = TRUE;
线程B的回调函数开头是:
while(bConneting)
此处用变量好还是用核心对象好呢?
变量的话,每次线程都要判断下。
核心对象用Wait...函数的话,有内核模式和用户模式的切换,但是线程就休眠了,不占用CPU了
------解决方案--------------------
那就用事件对象了,B线程一般是要等A将数据打包完成以后才开始工作吧。
------解决方案--------------------
楼主,你把优缺点都说了。那个比较消耗资源啊。
CEvent,CMutex比较好。
------解决方案--------------------
很多人拿这个问题来讨论多线程是否要互斥的问题,说明这样的代码很多。
代码以实用简单为主,你做工程多了就知道了,做简单特别难,做复杂就容易。千万不了觉得自己的程序好像没使用过互斥对象,所以找个地方用上,觉得专业。
如果你能完成功能,但用最不起眼的代码,那最好。
看一个程序的设计是:
线程A执行:
bSendData = TRUE;
线程B的回调函数开头是:
while(bConneting)
此处用变量好还是用核心对象好呢?
变量的话,每次线程都要判断下。
核心对象用Wait...函数的话,有内核模式和用户模式的切换,但是线程就休眠了,不占用CPU了
------解决方案--------------------
那就用事件对象了,B线程一般是要等A将数据打包完成以后才开始工作吧。
------解决方案--------------------
楼主,你把优缺点都说了。那个比较消耗资源啊。
CEvent,CMutex比较好。
------解决方案--------------------
很多人拿这个问题来讨论多线程是否要互斥的问题,说明这样的代码很多。
代码以实用简单为主,你做工程多了就知道了,做简单特别难,做复杂就容易。千万不了觉得自己的程序好像没使用过互斥对象,所以找个地方用上,觉得专业。
如果你能完成功能,但用最不起眼的代码,那最好。