标题是这样的问题:当一个线程退出时,它的缓存内存是否会被刷新到主内存?
我想知道因为主线程创建一些线程的情况很常见,它们对数组的独立部分做了一些工作(彼此之间没有数据依赖关系),主线程连接所有工作线程,然后进行更多计算使用工作线程计算产生的数组值。是否需要为主线程声明数组volatile
才能看到它的副作用?
答案 0 :(得分:1)
pthreads规范要求pthread_join()
是"synchronizes memory with respect to other threads"的函数之一,所以对于pthreads你没问题 - 在pthread_join()
返回后,主线程将会看到所有联接线程对共享内存的更新。
答案 1 :(得分:0)
假设您在C中执行此操作,并且如果数组是全局的,或者您已将结构传递给包含线程需要在其上执行计算的索引和指向数组的指针的线程,则数组由于数组内存在工作线程和主线程之间共享,因此主线程无需易失性即可查看更改。