訊號量(sem)

來源:互聯網
上載者:User

標籤:linux   sem   訊號量   

一、訊號量:(資料操作鎖)控制進程間互斥、同步等,協調多個程式同時訪問一個共用資源。

    工作原理:訊號量只能有兩種操作等待和操作,即:P V操作,必須是原子操作。

              P(sv):如果 sv 的值大於零就減一;如果它的值為零,就掛起;

              V(sv):如果有被掛起的,恢複運行,如果沒有就加一。

二、函數原型:

    int semget(key_t key, int nsems,int semflg);

    int semop(int semid,struct sembuf *sops,size_t nsops);

    int semctl(int semid, int semnum, int cmd, ...);

    /*    

     *    semid:訊號量集的標識符;    semnum:第幾個訊號量;

     *    cmd:需要執行的命令,根據命令的不同,函數有三個或四個參數(union)

     */

     cmd:IPC_RMID,立即刪除訊號集,喚醒被阻塞的進程;

     cmd:SETVAL,設定訊號量集中的一個單獨的訊號量的值。

     cmd:GETALL用於讀取訊號量集中的所有訊號量的值。

     union semun

     {

         int val;

         struct semid_ds *buf;

         unsigned short *array;

         struct seminfo *_buf;

      };//使用者需自己定義聲明


三、代碼實現:



四、實現結果:






訊號量(sem)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.