大佬教程收集整理的这篇文章主要介绍了c – 如何根据用户请求安全地停止正在运行的线程?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class myThread : public QThread { QMutex mutex; bool stop; public: myThread() : stop(false) {} void requestStop() { QMutexLocker(&muteX); stop = true; } void run() { while(counter1--) { QMutexLocker(&muteX); if (stop) return; while(counter2--) { } } } };
请注意,上述代码很少.运行功能在完成之前最多需要20秒,所以我想避免在循环中锁定和解锁互斥变量.有没有比这种方法更快的方法.
提前致谢.
如果减少的互斥范围适合您,那么如果将停止变量声明为“volatile”,则根本不需要互斥锁. “volatile”关键字导致(至少在VC下)读取/写入内存屏障围绕访问停止,这意味着您的requestStop()调用将保证传递给您的线程而不是缓存.以下代码应该可以在多核处理器上正常工作.
class myThread : public QThread { volatile bool stop; public: myThread() : stop(false) {} void requestStop() { stop = true; } void run() { while(counter1--) { if (stop) return; while(counter2--) { } } } };
以上是大佬教程为你收集整理的c – 如何根据用户请求安全地停止正在运行的线程?全部内容,希望文章能够帮你解决c – 如何根据用户请求安全地停止正在运行的线程?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。