问题:
pthread_mutex_lock(mutex);
count += 1;
pthread_mutex_unlock(mutex);
上述示例代码中,count和mutex本身没有关系,而在cpu和memory之间会有cache,这段代码是如何保证mutex被解锁前count相关的cache能够刷新到memory中,被其他线程的lock后可以看到?
解答
是通过内存屏障(memory barriar)。
Programming with POSIX Threads - 3.4 Memory visibility between threads: