sho*_*osh 9 c++ multithreading
我有一个工作者std::thread,我希望它的主循环检查是否有其他线程告诉它停止循环并退出.
什么是一个很好的跨平台方式来做到这一点?boost是否为它提供了一些事件对象?
使用只是一个bool考虑线程安全?
.. 这得看情况.线程在做什么?它是否会阻止任何内容,I/O sleep或其他API?
如果它只是CPU循环,并且无论它何时停止并停止并退出都无关紧要,那么只需使用布尔值即可.在这种情况下,锁定'stopAndExit'布尔值是没有意义的.
如果工作线程在一个循环中没有将它读为真,那么也许它应该是,因为一些缺乏原子性,它将在下一轮获得它.为什么在不需要时执行锁定/ API调用?与简单的"if(停止)退出;"相比,用户获取/释放同步对象的内核级别调用将花费很长时间,在每个可能用于计算的循环上浪费时间,或者无论您在CPU中执行什么操作 - 绑定线程.
它是跨平台的
此致,马丁
| 归档时间: |
|
| 查看次数: |
11728 次 |
| 最近记录: |