【发布时间】:2014-04-10 01:56:47
【问题描述】:
题目是问题:当一个线程退出时,它的缓存内存是否会刷新到主内存?
我想知道,因为主线程创建一些线程的情况很常见,它们在数组的独立部分上做一些工作(彼此之间没有数据依赖关系),主线程连接所有工作线程,然后进行更多计算使用工作线程计算产生的数组值。数组是否需要声明为volatile 以便主线程查看它的副作用?
【问题讨论】:
-
您使用哪种编程语言?请注意,行为通常由编程语言定义,独立于操作系统和硬件架构。
-
@nosid 我正在使用 pthreads 和 C。
-
CPU 内存缓存通常没有线程的概念——如果它被写入缓存,它最终会被刷新到较低的缓存级别和主内存,除非进程崩溃或类似的东西首先使这些缓存行无效。
-
@twalberg 是的,但是操作系统有线程的概念。我想知道当线程结束时操作系统是否会导致缓存刷新,以便其他线程可以看到它对内存的修改。不过,caf 似乎已经回答了我的问题。
标签: c multithreading caching operating-system pthreads