pthreads读取和写入相同的变量

时间:2014-03-21 01:27:32

标签: c linux multithreading pthreads

我知道我应该使用互斥锁,但是我目前使用pthreads的方式会使程序过于复杂......

无论如何我基本上都有一个变量,我用它来表示线程当前是否正在执行工作。在主线程中我在while循环中运行它检查哪些线程不再忙。现在显然我的线程一旦完成就可以写入同一个变量。

是否允许从2个不同的线程读取和写入相同的变量,如果1个线程只读取而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