【Linux高級環境編程】線程同步的封裝

      網友投稿 662 2022-05-29

      文章目錄

      線程同步的概念

      一、互斥量

      1.1、互斥量概念

      1.2、互斥量初始化

      1.3、互斥量的銷毀

      1.4、互斥量的加鎖與解鎖操作

      1.5、回憶鎖的語義:嘗試鎖

      1.6、互斥量的操作順序

      二、線程安全版本地CLLogger類

      三、互斥量的封裝

      四、條件變量及其封裝

      五、事件對象的封裝

      線程同步的概念

      通常,對一個存儲單元的訪問,要經歷三個步驟:

      將內存單元中的數據,讀入寄存器

      對寄存器中的值進行運算

      將寄存器中的值,寫回內存單元

      無鎖時出錯的情況:

      一、互斥量

      1.1、互斥量概念

      可以通過使用pthread的互斥接口保護數據,確保同一時間里只有一個線程訪問數據。

      互斥量mutex,本質上就是一把鎖:

      在訪問共享資源前,對互斥量進行加鎖

      在訪問完成后釋放互斥量上的鎖

      對互斥量進行加鎖后,任何其他試圖再次對互斥量加鎖的線程將會被阻塞,直到鎖被釋放

      1.2、互斥量初始化

      互斥量在使用前,必須要對互斥量進行初始化,函數原型:

      #include int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);

      【Linux高級環境編程】線程同步的封裝

      1

      2

      3

      參數與返回值:

      mutex:即互斥量,類型是pthread_mutex_t

      注意:mutex必須指向有效的內存區域

      attr:設置互斥量的屬性,通常可采用默認屬性,即可將attr設為NULL

      成功返回0,出錯返回錯誤碼

      1.3、互斥量的銷毀

      互斥量在使用完畢后,必須要對互斥量進行銷毀,以釋放資源:

      #include int pthread_mutex_destroy(pthread_mutex_t *mutex);

      1

      2

      3

      參數與返回值:

      mutex:即互斥量

      成功返回0,出錯返回錯誤碼

      1.4、互斥量的加鎖與解鎖操作

      在對共享資源訪問之前和訪問之后,需要對互斥量進行加鎖和解鎖操作,函數原型:

      #include int pthread_mutex_lock(pthread_mutex_t *mutex); Int pthread_mutex_unlock(pthread_mutex_t *mutex);

      1

      2

      3

      4

      成功返回0

      1.5、回憶鎖的語義:嘗試鎖

      當使用pthread_mutex_lock時,若已被加鎖,則調用線程將被阻塞。有沒有辦法讓線程不阻塞,即實現非阻塞的語義。函數原型:

      #include int pthread_mutex_trylock(pthread_mutex_t *mutex);

      1

      2

      3

      調用該函數時,若互斥量未加鎖,則鎖住該互斥量,返回0;若互斥量已加鎖,則函數直接返回失敗,即EBUSY

      1.6、互斥量的操作順序

      定義一個互斥量pthread_mutex_t

      調用pthread_mutex_init初始化互斥量

      調用pthread_mutex_lock或者pthread_mutex_trylock對互斥量進行加鎖操作

      調用pthread_mutex_unlock對互斥量解鎖

      調用pthread_mutex_destroy銷毀互斥量

      示例3.12(在示例3.8基礎之上)

      二、線程安全版本地CLLogger類

      三、互斥量的封裝

      四、條件變量及其封裝

      五、事件對象的封裝

      linux 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:uniCloud基礎入門(二)---云存儲基礎
      下一篇:adb無線調試手機-android必備技能
      相關文章
      亚洲人成未满十八禁网站| 亚洲成av人片天堂网| 久久亚洲私人国产精品| 亚洲另类激情综合偷自拍图| 亚洲国产午夜中文字幕精品黄网站 | 亚洲精品国产精品乱码不99| 国产成人综合亚洲一区| 色偷偷亚洲男人天堂| 亚洲av日韩综合一区二区三区| 亚洲中文无码mv| 亚洲精品伦理熟女国产一区二区| 中文字幕亚洲码在线| 亚洲人成色77777在线观看| 亚洲成A人片在线播放器| 亚洲综合中文字幕无线码| ASS亚洲熟妇毛茸茸PICS| 亚洲熟女www一区二区三区| 亚洲日韩精品国产3区 | 亚洲精品无码乱码成人| 亚洲色爱图小说专区| 亚洲国产一二三精品无码| 亚洲成av人片天堂网| 亚洲午夜久久影院| 亚洲另类精品xxxx人妖| 亚洲国产成人精品激情| 亚洲人成网站在线播放2019| 亚洲欧美在线x视频| 亚洲精品国产精品乱码不卡| 永久亚洲成a人片777777 | 亚洲国产成人久久精品软件| 国产一区二区三区亚洲综合| 午夜亚洲福利在线老司机| 亚洲人成电影网站国产精品| 国产亚洲av人片在线观看| 亚洲AV无码久久寂寞少妇| 亚洲精品国产手机| 亚洲综合无码无在线观看| 最新亚洲人成无码网www电影| 另类图片亚洲校园小说区| 亚洲色偷偷综合亚洲AV伊人| 亚洲精品无码专区在线在线播放|