互斥鎖與條件變量的語(yǔ)義
互斥鎖與條件變量的語(yǔ)義
互斥鎖,我要對(duì)一塊共享數(shù)據(jù)操作,但是我怕同時(shí)你也操作,那就亂套了,所以我要加鎖,這個(gè)時(shí)候我就開(kāi)始操作這塊共享數(shù)據(jù),而你進(jìn)不了臨界區(qū),等我操作完了,把鎖丟掉,你就可以拿到鎖進(jìn)去操作了
條件變量,我要看一塊共享數(shù)據(jù)里某一個(gè)條件是否達(dá)成,我很關(guān)心這個(gè),如果我用互斥鎖,不停的進(jìn)入臨界區(qū)看條件是否達(dá)成,這簡(jiǎn)直太悲劇了,這樣一來(lái),我醒的時(shí)候會(huì)占CPU資源,但是卻干不了什么時(shí),只是頻繁的看條件是否達(dá)成,而且這對(duì)別人來(lái)說(shuō)也是一種損失,我每次加上鎖,別人就進(jìn)不了臨界區(qū)干不了事了。好吧,輪詢總是痛苦的,咱等別人通知吧,于是條件變量出現(xiàn)了,我依舊要拿個(gè)鎖,進(jìn)了臨界區(qū),看到了共享數(shù)據(jù),發(fā)現(xiàn),咦,條件還不到,于是我就調(diào)用pthread_cond_wait(),先把鎖丟了,好讓別人可以去對(duì)共享數(shù)據(jù)做操作,然后呢?然后我就睡了,直到特定的條件發(fā)生,別人修改完了共享數(shù)據(jù),給我發(fā)了個(gè)消息,我又重新拿到了鎖,繼續(xù)干俺要干的事情了……
posted on 2010-12-16 15:35 Vincent 閱讀(850) 評(píng)論(0) 編輯 收藏 引用 所屬分類: 多線程