C语言 Pthread同步问题



如果所有线程都读取一个全局变量,该变量在创建线程之前由main()赋值,该怎么办?我们需要互斥锁来实现同步吗?

读取变量:no

写入和读取变量:yes

No.

当多个线程访问一个内存位置(通过一个非原子值),并且至少有一个访问是写操作,并且这些操作没有排序时,就会发生数据竞争。

由于线程创建是一个同步点,所以线程创建后的所有访问顺序都在初始写访问之后,后面的访问都只是读。所以没有种族。

如果任何线程想要更改全局变量的值,那么是的,您需要一个新的互斥锁。否则不需要同步。

最新更新