为什么 一个线程读数据,一个线程写数据,要加锁?

zrdongjiao zrdongjiao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
为什么 一个线程读数据,一个线程写数据,要加锁?


这种奇怪的言论,不知道为什么会出现?



随手举个例子



全局变量int g_val;



线程1
{

printf("%d",g_val);

}


线程2
{
g_val++;

}


显然不需要 加锁啊。 多个线程修改数据,那么则需要加锁,如果只是一个读,一个写,加锁作甚?




问题2:

典型的读写者模型: 多个线程读,多个线程写。


http://blog.csdn.net/morewindows/article/details/7596034问中提到的这个模型

与上一篇《秒杀多线程第十篇 生产者消费者问题》的生产者消费者问题一样,读者写者也是一个非常著名的同步问题。读者写者问题描述非常简单,

有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者在读文件时写者也不去能写文件。


问:为什么要如此规定。读的时候不能写,写怎么了?影响数据? 还是怎地?写的时候,不能读?读有如何。

这种规定的模型真不知道是如何提出来的。



...全文

相关推荐

评论 51
收藏 已收藏
分享
返回顶部
zrdongjiao
VC/MFC 16,550 成员 421,606 内容