我知道我应该使用互斥,但就我目前使用线程的方式而言,它会使程序过于复杂.
无论如何,我基本上有一个变量,用于表示线程当前是否正在执行工作。在主线程中,我在what循环中运行它,检查哪些线程不再繁忙。现在,很明显,我的线程可以在这个变量完成后写入这个变量。
是否允许从两个不同线程的相同变量中读取和写入,如果一个线程仅在读取,而一个线程仅在写入。阅读旧版本并不是什么大问题,因为在下一次迭代时,它只会读取一次正确的版本。
那么做这样的事安全吗?
发布于 2014-03-21 01:38:12
一般情况下,不。
以下文章解释了原因:
http://www.domaigne.com/blog/computing/mutex-and-memory-visibility/
下面是作为内存屏障的API函数列表:
11
https://stackoverflow.com/questions/22548536
复制相似问题