访问资源但不修改资源是否需要使用线程锁?
我设置了一个全局队列 g_vOffLineQue 有2个线程同时对此队列进行操作,线程1会不停的对此队列增加数据,线程2会访问此队列并删除满足条件的数据,我想问一下如果线程2仅仅只是访问队列的时候是否需要使用线程锁?
Scope_Mutex lock(m_vLock); //此处的线程锁是否需要?
pOffLineInfo = g_vOffLineQue.front();
if ( 1 == pOffLineInfo->cmd )
{
...
}
如上,在这个访问操作前是否需要加线程锁呢?
[解决办法]
就算是读也一样需要加锁
[解决办法]
你怎么能够保证,在一个线程读时,另一个线程没对资源修改了。
如果是同时读,都没问题
同时读写,就会出问题了。除非你能保证一个读时,另外一个不在写。操作系统保证不了,只能你自己保证了。