使用const bool参考进行后台任务取消跟踪?(C++)

And*_*nko 4 c++ multithreading asynchronous

我有一个桌面应用程序,当用户请求时,某些计算在后台线程中运行.有一个取消按钮.

我知道向后台任务发信号取消的"安全"或"正确"方式(使用Qt信号/插槽连接,后台任务轮询的互斥锁定布尔值等).

但是,最简单的事情似乎是bool cancelled在我的主线程类中有一个,它在按下取消按钮时同步设置,并传递const bool &cancelled给它轮询的后台线程.

这种方法有可能适得其反吗?

Che*_*Alf 5

线程可以在单独的处理器上运行,每个处理器都有自己的缓存.如果布尔值是原子的,你可以这样做.否则,您可能会将更改传播到最近的缓存,并且对另一个线程不可见.