您的位置:首页 > 其它

加锁的原因 结构体内部增加锁

2015-10-16 10:11 239 查看
比如,链表的inset函数,需要加锁。

那么,就应该在ListNode类的内部增加成员变量,用于锁定。

要给链表的insert()方法,加锁的原因:

比如某个List实例,list_1,该变量在主线程和子线程中,被共享了。即主线程也调用list_1的Insert()方法,子线程也调用。

这样就必须要加锁才行。

请注意,我把CRITICAL_SECTION

变量放在
List
结构之中。你也可以使用一个全局变量取代之,但我是希望每一个链表实体都能够独立地读写。如果只使用一个全局性critical
section
,就表示一次只能读写一个链表,这会产生效率上的严重问题。

京麦中,子线程类QDownLoadThread中的成员变量bool
m_bStop。对该变量的访问,会进行加锁。

原因:

在主线程中,会调用QDownLoadThread实例的setValue()方法,修改该实例的成员变量m_bStop。

同时,QDownLoadThread实例的run()函数中,也会调用该变量。

这样,在某个时刻,就会出现,主线程和子线程同时使用该变量的情况,所以,对该变量的访问要加锁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: