在多个线程中使用时,共享内存是否需要同步。以下是该方案。
让我知道相同的评论。
答案 0 :(得分:1)
如果数组包含纯值类型,并且每个线程都在数组的不相交子集上运行 - 这就是说 每个线程都有一组互斥的索引,它将读/写或者从 - 然后不,您不需要任何类型的同步。
数组本身只是一块内存。重要的是没有两个线程试图读取或写入不受保护的相同存储器位置 - 他们可以愉快地读取和写入交错或相邻或任何其他不相交的位置,因为他们不会踩到彼此的脚趾可以这么说。
但是,如果几个线程需要读取或写入数组中的相同索引,那么您绝对需要使用某种类型的同步来保护这些读取和写入。例如,假设你有:
int ia[10];
和两个主题。如果你能保证(通过任何方式)线程#1只能访问ia[0..4]
而线程#2只能访问ia[5..9]
那么你就是好的。但是,如果他们都想在任何地方读或写,那么你需要一些东西来保护这些访问。