我知道我应该使用互斥锁,但是我目前使用pthreads的方式会使程序过于复杂......
无论如何我基本上都有一个变量,我用它来表示线程当前是否正在执行工作。在主线程中我在while循环中运行它检查哪些线程不再忙。现在显然我的线程一旦完成就可以写入同一个变量。
是否允许从2个不同的线程读取和写入相同的变量,如果1个线程只读取而1个线程只写入。阅读旧版本并不是很重要,因为它只会在下一次迭代中读取正确的一次。
这样做是否安全?
答案 0 :(得分:2)
一般来说,没有。
以下文章解释了原因:
http://www.domaigne.com/blog/computing/mutex-and-memory-visibility/
以下是充当内存障碍的API函数列表:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_11