久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

關(guān)于 多線程中互斥鎖和條件鎖的理解

 nuster 2016-05-13
互斥鎖:pthread_mutex_t ,為了使不同線程互斥的使用某個資源,。
條件鎖:pthread_mutex_t, 為了保證不同線程之間有順序(通過條件控制)地完成某個流程。
互斥鎖比較簡單,,也可以單獨(dú)使用,。
對于條件鎖,,通常配合一個互斥鎖一起使用,,以防止多個線程同時請求pthread_cond_wait()。
1. int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime)  等待條件有兩種方式:無條件等待pthread_cond_wait()和計時等待pthread_cond_timedwait(),,其中計時等待方式如果在給定時刻前條件沒有滿足,,則返回ETIMEOUT,結(jié)束等待,,其中abstime以與time()系統(tǒng)調(diào)用相同意義的絕對時間形式出現(xiàn),,0表示格林尼治時間1970年1月1日0時0分0秒。  無論哪種等待方式,,都必須和一個互斥鎖配合,,以防止多個線程同時請求pthread_cond_wait()(或pthread_cond_timedwait(),下同)的競爭條件(Race Condition),。mutex互斥鎖在調(diào)用pthread_cond_wait()前必須由本線程加鎖(pthread_mutex_lock()),,而在更新條件等待隊列以前,mutex保持鎖定狀態(tài),,并在線程掛起進(jìn)入等待前解鎖,。在條件滿足從而離開pthread_cond_wait()之前,mutex將被重新加鎖,,以與進(jìn)入pthread_cond_wait()前的加鎖動作對應(yīng),。
2.    int pthread_cond_broadcast(pthread_cond_t *cond); 
       int pthread_cond_signal(pthread_cond_t *cond);
  激發(fā)條件有兩種形式,pthread_cond_signal()激活一個等待該條件的線程,,存在多個等待線程時按入隊順序激活其中一個,;而pthread_cond_broadcast()則激活所有等待線程,。
這里需要說明的是pthread_cond_signal,只喚醒阻塞隊列上面的一個線程,,其他線程仍然阻塞在 條件鎖上面,,除非有其他線程繼續(xù)使用pthread_cond_signal繼續(xù)喚醒阻塞線程。
pthrad_cons_broadcast 喚醒阻塞隊列上面的所有線程,,但是只有一個線程可以競爭到 互斥鎖,, 其他線程此時不在阻塞在 條件鎖上面,而是阻塞在  互斥鎖上面 ,。直到得到互斥鎖的線程 unclock 掉互斥鎖,,這些線程在繼續(xù)競爭。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多