pthread_mutex_lock是如何确保被保护的共享变量(包括缓存)即时被其他线程看到的?

原创
2019/03/15 10:26
阅读数 1.1K

问题:

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:

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部