国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux互斥鎖的作用 互斥鎖是什么

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:嵌入式Linux系統開 ? 2023-07-21 11:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、互斥鎖

互斥鎖(mutex),在訪問共享資源之前對互斥鎖進行上鎖,在訪問完成后釋放互斥鎖(解鎖);對互斥鎖進行上鎖之后,任何其它試圖再次對互斥鎖進行加鎖的線程都會被阻塞,直到當前線程釋放互斥鎖。如果釋放互斥鎖時有一個以上的線程阻塞,那么這些阻塞的線程會被喚醒,它們都會嘗試對互斥鎖進行加鎖,當有一個線程成功對互斥鎖上鎖之后,其它線程就不能再次上鎖了,只能再次陷入阻塞,等待下一次解鎖。

初始化互斥鎖

#includeintpthread_mutex_init(pthread_mutex_t*mutex,constpthread_mutexattr_t*attr);

加鎖、解鎖

#includeintpthread_mutex_lock(pthread_mutex_t*mutex);intpthread_mutex_unlock(pthread_mutex_t*mutex);

當互斥鎖已經被其它線程鎖住時,調用 pthread_mutex_lock()函數會被阻塞,直到互斥鎖解鎖;如果線程不希望被阻塞,可以使用 pthread_mutex_trylock()函數;調用 pthread_mutex_trylock()函數嘗試對互斥鎖進行加鎖,如果互斥鎖處于未鎖住狀態,那么調用 pthread_mutex_trylock()將會鎖住互斥鎖并立馬返回,如果互斥鎖已經被其它線程鎖住,調用 pthread_mutex_trylock()加鎖失敗,但不會阻塞,而是返回錯誤碼 EBUSY。

#includeintpthread_mutex_trylock(pthread_mutex_t*mutex);

銷毀互斥鎖(不再需要互斥鎖時,應該將其銷毀)

#includeintpthread_mutex_destroy(pthread_mutex_t*mutex);

互斥鎖死鎖

如果一個線程試圖對同一個互斥鎖加鎖兩次,該線程會陷入死鎖狀態,一直被阻塞永遠出不來;這就是出現死鎖的一種情況。

有時,一個線程需要同時訪問兩個或更多不同的共享資源,而每個資源又由不同的互斥鎖管理。當超過一個線程對同一組互斥鎖(兩個或兩個以上的互斥鎖)進行加鎖時,就有可能發生死鎖;譬如,程序中使用一個以上的互斥鎖,如果允許一個線程一直占有第一個互斥鎖,并且在試圖鎖住第二個互斥鎖時處于阻塞狀態,但是擁有第二個互斥鎖的線程也在試圖鎖住第一個互斥鎖。因為兩個線程都在相互請求另一個線程擁有的資源,所以這兩個線程都無法向前運行,會被一直阻塞,于是就產生了死鎖。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219009
  • 線程
    +關注

    關注

    0

    文章

    509

    瀏覽量

    20825
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux高級編程---互斥

    Linux系統里,有很多的應用,包括互斥,文件,讀寫等等,信號量其實也應該是
    發表于 01-13 10:07

    信號量、互斥、自旋

    信號量、互斥、自旋http://bbs.edu118.com/forum.php?mod=viewthread&tid=488&fromuid=231(出處: 信盈達IT技術社
    發表于 08-29 09:48

    RT-Thread實現的互斥屬性包括哪些

    * lock);函數返回 lock無效返回EINVAL,否則返回0或EPERM。互斥屬性RT-Thread實現的互斥屬性包括互斥
    發表于 08-12 15:06

    華為物聯網操作系統LiteOS內核教程05-互斥

    1. LiteOS的互斥 1.1. 互斥 在多任務環境下,往往存在多個任務競爭同一共享資源的應用場景,互斥
    發表于 03-13 16:19 ?1665次閱讀
    華為物聯網操作系統LiteOS內核教程05-<b class='flag-5'>互斥</b><b class='flag-5'>鎖</b>

    兩個線程和互斥如何形成死循環?

    兩個線程,兩個互斥如何形成死鎖?程序流程圖如下: 程序流程圖 如上圖所示: t0時刻,主線程創建子線程,并初始化互斥mutex1、mutex2; t1時刻,主線程申請到了mutex
    的頭像 發表于 01-02 16:47 ?1875次閱讀
    兩個線程和<b class='flag-5'>互斥</b><b class='flag-5'>鎖</b>如何形成死循環?

    深入了解互斥、條件變量、讀寫以及自旋

    C++11只包含其中的部分。接下來我主要通過pthread的API來展開本文。 mutex(互斥量) mutex(mutual exclusive)即互斥量(互斥體)。也便是常說的互斥
    的頭像 發表于 11-01 10:02 ?2470次閱讀

    Linux中的傷害/等待互斥介紹

    序言:近期讀Linux 5.15的發布說明,該版本合并了實時機制,當開啟配置宏CONFIG_PREEMPT_RT的時候,這些被基于實時互斥
    的頭像 發表于 11-06 17:27 ?3371次閱讀

    Linux下線程間通訊--互斥

    互斥是一種簡單的加鎖的方法來控制對共享資源的存取,當多個線程訪問公共資源時,為了保證同一時刻只有一個線程獨占資源,就可以通過互斥加以限制,在一個時刻只能有一個線程掌握某個
    的頭像 發表于 08-24 15:53 ?2785次閱讀
    <b class='flag-5'>Linux</b>下線程間通訊--<b class='flag-5'>互斥</b><b class='flag-5'>鎖</b>

    Linux實例:多線程和互斥到底該如何使用

    最近在寫多進程和Linux中的各種的文章,總覺得只有文字講解雖然能夠知道多進程和互斥是什么,但是還是不知道到底該怎么用。
    發表于 05-18 14:16 ?739次閱讀
    <b class='flag-5'>Linux</b>實例:多線程和<b class='flag-5'>互斥</b><b class='flag-5'>鎖</b>到底該如何使用

    自旋互斥的區別有哪些

    自旋 自旋互斥很相似,在訪問共享資源之前對自旋進行上鎖,在訪問完成后釋放自旋(解鎖)
    的頭像 發表于 07-21 11:19 ?1.1w次閱讀

    互斥不能在中斷中使用?

    互斥是一種特殊的二值信號量,因為它解決了優先級翻轉的問題。
    的頭像 發表于 07-25 15:36 ?3997次閱讀

    互斥、條件變量、讀寫、自旋及信號量介紹

    一、互斥(同步) 在多任務操作系統中,同時運行的多個任務可能都需要使用同一種資源。這個過程有點類似于,公司部門里,我在使用著打印機打印東西的同時(還沒有打印完),別人剛好也在此刻使用打印機打印東西
    的頭像 發表于 11-10 16:16 ?3617次閱讀
    <b class='flag-5'>互斥</b><b class='flag-5'>鎖</b>、條件變量、讀寫<b class='flag-5'>鎖</b>、自旋<b class='flag-5'>鎖</b>及信號量介紹

    互斥和自旋的區別 自旋臨界區可以被中斷嗎?

    互斥和自旋的區別 自旋臨界區可以被中斷嗎? 互斥和自旋
    的頭像 發表于 11-22 17:41 ?1647次閱讀

    自旋互斥的使用場景是什么

    自旋互斥是兩種常見的同步機制,它們在多線程編程中被廣泛使用。在本文中,我們將介紹自旋互斥
    的頭像 發表于 07-10 10:05 ?2209次閱讀

    互斥和自旋的實現原理

    互斥和自旋是操作系統中常用的同步機制,用于控制對共享資源的訪問,以避免多個線程或進程同時訪問同一資源,從而引發數據不一致或競爭條件等問題。 互斥
    的頭像 發表于 07-10 10:07 ?1644次閱讀