为什么 一个线程读数据,一个线程写数据,要加锁?
这种奇怪的言论,不知道为什么会出现?
随手举个例子
全局变量int g_val;
线程1
{
printf("%d",g_val);
}
线程2
{
g_val++;
}
显然不需要 加锁啊。 多个线程修改数据,那么则需要加锁,如果只是一个读,一个写,加锁作甚?
问题2:
典型的读写者模型: 多个线程读,多个线程写。
http://blog.csdn.net/morewindows/article/details/7596034问中提到的这个模型
与上一篇《秒杀多线程第十篇 生产者消费者问题》的生产者消费者问题一样,读者写者也是一个非常著名的同步问题。读者写者问题描述非常简单,
有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者在读文件时写者也不去能写文件。
问:为什么要如此规定。读的时候不能写,写怎么了?影响数据? 还是怎地?写的时候,不能读?读有如何。
这种规定的模型真不知道是如何提出来的。