Linux多線程編程——線程的同步與互斥

來源:互聯網
上載者:User

標籤:釋放   ini   bsp   初始化   linux   linux多線程   共用資源   舉例   共用   

前言:無論是多線程編程還是多進程編程,控制好不同線程或不同進程之間同步和互斥問題是非常有必要的。同步是多個進程或線程共同完成某個任務,舉例說,一個緩衝區的生產者和消費者問題,當生產者生產了一個商品時,等待的消費者就獲得了一個訊息知道可以去取走商品了,當消費者取走一個商品後,生產者就知道可以繼續生產一個商品了,這是同步問題,所謂互斥問題,是指某個共用資源在一次操作中,只能被一個線程或進程佔有,其他的線程或進程不能對它進行操作,比如對一個共用記憶體的讀寫操作,當一個進程對它寫的時候,另一個進程就不能對它讀,不然有可能造成資料不一致。

 互斥量

互斥量相當與鎖,在使用共用資源時,對它加鎖,使用完後,釋放鎖,在加鎖期間,其他的線程不能對該共用資源進行操作

資料類型:pthread_mutex_t

相關API

初始化和銷毀互斥量

int pthread_mutex_init(pthread_mutext_t *restrict mutex, const pthread_mutexattr_t *restrict attr); //attr設定為NULL,代表以預設屬性初始化互斥量

int pthread_mutex_destroy(pthread_mutex_t *mutex);

加鎖

int pthread_mutex_lock(pthread_mutex_t *mutex); //對互斥量加鎖,若互斥量已加鎖,則會阻塞,直到訊號量解鎖,成功返回0,

int pthread_mutex_trylock(pthread_mutex_t *mutex);//如果訊號量沒被鎖,則加鎖,並返回0,若訊號已被鎖,則不會阻塞,返回一個非0值

int pthread_mutex_unlock(pthread_mutex_t *mutex);//解鎖

Linux多線程編程——線程的同步與互斥

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.