在线亚洲黄色-在线亚洲观看-在线亚洲电影-在线亚洲成人-岛国大片在线观看免费版-岛国大片在线播放高清

Linux線程的信號量同步

導讀信號量和互斥鎖(mutex)的區別:互斥鎖只允許一個線程進入臨界區,而信號量允許多個線程同時進入臨界區。不多做解釋,要使用信號量同步,需要包含頭文件semaphore.h。主要用到的函數。intsem_init(sem_t*sem,intpshared,unsignedintvalue);,其中sem是要初始化的信號量,pshared表示此信號量是在進程間共享還是線程間共享,value是信號量的初始值。intsem_destroy(sem_t*sem);,其中sem是要銷毀的信號量。只有用sem_init初始化的信號量才能用sem_destroy銷毀。

系統大全為您提供信號量和互斥鎖(mutex)的區別:互斥鎖只允許一個線程進入臨界區,而信號量允許多個線程同時進入臨界區。不多做解釋,要使用信號量同步,需要包含頭文件semaphore.h。主要用到的函數:intsem_init(sem_t*sem,intpshared,unsignedintvalue);,其中sem是要初始化的信號量,pshared表示此信號量是在進程間共享還是線程間共享,value是信號量的初始值。intsem_destroy(sem_t*sem);,其中sem是要銷毀的信號量。只有用sem_init初始化的信號量才能用sem_destroy銷毀。intsem_wait(sem_t*sem);等待信號量,如果信號量的值大于0,將信號量的值減1,立即返回。如果信號量的值為0,則線程阻塞。相當于P操作。成功返回0,失敗返回-1。intsem_post(sem_t*sem);釋放信號量,讓信號量的值加1。相當于V操作。下列的代碼演示了如何用信號量同步,模擬一個窗口服務系統。/*@purpose:基于信號量的多線程同步,操作系統原理中的P,V操作?*@author:jollywing@foxmail.com?*@create:2015-03-20Fri?**/?#include#include#include#include#include??/*@Scene:某行業營業廳同時只能服務兩個顧客。?*有多個顧客到來,每個顧客如果發現服務窗口已滿,就等待,?*如果有可用的服務窗口,就接受服務。*/?/*將信號量定義為全局變量,方便多個線程共享*/sem_tsem;?/*每個線程要運行的例程*/void*get_service(void*thread_id){??/*注意:立即保存thread_id的值,因為thread_id是對主線程中循環變量i的引用,它可能馬上被修改*/??intcustomer_id=*((int*)thread_id);???if(sem_wait(&sem)==0){????usleep(100);????????/*servicetime:100ms*/????printf("customer%dreceiveservice...",customer_id);????sem_post(&sem);??}}?#defineCUSTOMER_NUM10?intmain(intargc,char*argv[]){??/*初始化信號量,初始值為2,表示有兩個顧客可以同時接收服務*/??/*@prototype:intsem_init(sem_t*sem,intpshared,unsignedintvalue);*/??/*pshared:ifpshared==0,thesemaphoreissharedamongthreadsofaprocess???*otherwisethesemaphoreissharedbetweenprocesses.?*/??sem_init(&sem,0,2);???/*為每個顧客定義一個線程id,pthread_t其實是unsignedlongint*/??pthread_tcustomers[CUSTOMER_NUM];???inti,ret;??/*為每個顧客生成一個線程*/??for(i=0;i
為你推薦
資訊專欄
熱門視頻
相關推薦
Ubuntu系統中安裝RPM格式包的方法 exit命令Linux命令應用大詞典729個命令解讀 Win81系統IE11瀏覽器無法輸入網銀密碼怎么辦 linux下利用tcpdump實現24小時自動抓包 Win8系統進程Systemexe占用100磁盤怎么辦 windows怎么與虛擬機linux共享 linux任務計劃工具crontab 會聲會影混音器怎么使用會聲會影混音器的使用 Ubuntu下disk清理保護方法 Linux命令之文件歸檔壓縮解壓縮targzipgunz Win8打開文件夾速度慢怎么解決解決Win8文件夾卡 Win81系統關機命令變成重啟問題解決方法 Win8系統還原ClearType設置的操作方法 linux配置多IP linux命令學習netstat U盤啟動在DOS下怎么刷新BIOS如何在dos下更新bios Ubuntu1304設置靜態ip Win8系統控制面板中管理工具的其他快速啟動技巧 用WPS制作密封線怎么制作用WPS制作密封線的方法 win8語音識別如何使用 linux后臺運行和關閉查看后臺任務 Win8中相機應用無法使用攝像頭辦法介紹 Linux下ApachePHPMysql默認安裝路徑 Centos7修改SSH端口號 Linux進程的理解 CPU不支持Win11系統怎么辦CPU不支持Win11系統解決辦法 Win11開機很慢怎么辦Win11提高開機速度的方法 Win11激活方法及密匙分享 Win11怎么徹底卸載軟件Win11徹底卸載軟件操作步驟 谷歌瀏覽器怎么設置下載前先彈出保存位置窗口 Win11怎么安裝apk應用Win11安裝Apk教程 不滿足Win11最低硬件要求的電腦如何升級Win11 如何通過更新推送升級Win11通過更新推送升級Win11方法 Windows7更改OEM信息與還原方法 微軟Win11測試預覽版任務欄無響應有區域無法加載怎么解決 Win11系統沒有瀏覽器怎么辦Win11系統找不到瀏覽器處理方法 Win11控制面板在哪里Win11控制面板開啟方法 如何立即獲取Windows1021H1更新獲取Windows1021H1更新方法分享 安卓將Aab替換Apk安裝包對Win11有影響嗎Win11支持安卓AAB安裝包 Win11任務欄時間怎么顯示出秒Win11時間顯示秒的解決方法
Top 主站蜘蛛池模板: 亚洲看片 | 国产精品久久久久aaaa | 中文字幕欧美在线观看 | 免费观看日韩大尺码观看 | 欧美日韩欧美 | 香蕉视频免费在线看 | 国产欧美综合精品一区二区 | 欧美 第一页 | 国产精品免费看 | 图片专区亚洲欧美另类 | 欧美 日韩 国产 色 欧美 日韩 中文 | 国产一区 在线播放 | 欧美日韩在线精品一区二区三区 | 日本高清天码一区在线播放 | 精品欧美一区二区三区在线观看 | 自拍偷拍日韩 | 婷婷在线免费视频 | 成人国产一区二区三区精品 | 美日韩免费视频 | 国产精品免费 | 欧美日韩国产三级 | 妖精视频一区二区三区 | 久久久久久久99久久久毒国产 | 国产成人精视频在线观看免费 | 日韩高清dvd | 国产成人综合久久 | 草逼视频免费看 | 欧美另类第一页 | 亚洲一区二区三区一品精 | 日产精品一区二区三区免费 | 欧美极品尤物在线播放一级 | 亚洲精品视频在线 | 亚洲一区二区三区免费 | a色毛片免费视频 | 日韩中文字幕第一页 | 国产视频观看 | 狠狠操夜夜 | 精品一区二区三区视频日产 | 真人一级一级毛片免费观看 | 国内一区二区三区精品视频 | 欧美日韩激情 |