【发布时间】:2020-06-02 11:54:03
【问题描述】:
假设我的程序中有一个全局数组,所以创建的所有线程都可以访问它。或者假设我将它作为参数传递给每个线程(同样的事情,因为它是对数组的引用,所以每个线程都将访问同一个数组)。
我的问题是:
如果我在程序开始时创建这个数组(当没有创建线程时),并将它发送到每个线程,他们只需要从中读取,我需要线程同步吗?
我知道在数组上写入会有问题,但没有线程在数组中写入。他们只阅读它。这就像一个常数。
【问题讨论】:
-
答案是“不”。您预计会出现什么样的问题?
-
如果您担心潜在的可见性问题,请参阅cppreference on thrd_create:“此功能的完成与线程的开头同步。”这应该足以保证您在此处描述的用例的可见性。免责声明:当然,cppreference 不是权威来源,因此如果您需要确定,请查看他们所引用的标准部分。
标签: c multithreading synchronization shared