版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
廣州商學院操作系統(tǒng)實驗報告(第4次)實驗名稱:實驗六線程同步一、實驗目的1.加深理解線程同步的概念及實現(xiàn)線程同步的原理。2.掌握Linux線程庫支持的信號量同步機制和信號量互斥機制,學會通過信號量信號實現(xiàn)線程間的同步與互斥。二、實驗內(nèi)容實驗七、線程同步實現(xiàn)公交車司機與售票員同步,參考實驗四,完成該程序的設計三、原理和實驗主要步驟1、原理:Linux的線程庫中定義了同步信號量以及多種同步信號量操作函數(shù)(原語)。POSIX信號量同步信號量的類型為sem_t基本的同步信號量操作函數(shù)有4個:sem_init()sem_wait()(相當于P操作)sem_post()(相當于V操作)sem_destroy()它們均在頭文件semaphore.h中聲明。sem_init函數(shù)原型:intsem_init(sem_t*sem,inttype,intvalue);其中,參數(shù)sem為同步信號量的指針;type為信號量類型,若為0,表示該信號量是現(xiàn)行進程的局部信號量(只在現(xiàn)行進程的線程之間使用),否則,它可為多個進程所共享;value是信號量值的初值。功能:初始化同步信號量。sem_wait函數(shù)原型:intsem_wait(sem_t*sem);功能:同步信號量的P操作sem_post函數(shù)原型:intsem_post(sem_t*sem);功能:同步信號量的V操作sem_destroy函數(shù)原型:intsem_destroy(sem_t*sem);功能:清理同步信號量上述函數(shù)返回0表示成功,非0表示失敗。2、本實驗要求應用Linux線程庫支持的信號量互斥機制改進實驗4.2,即程序test4_2.c。該互斥機制的內(nèi)容見講義Unit4中的4.2節(jié)。本實驗的程序框架和部分程序代碼如下,請完成該程序的設計,/*test6_1.c*/#include<stdio.h>#include<pthread.h>intticket[10]={1,3,5,7,9,2,4,6,8,10};intrest=10;intth_num[2]={1,2};/*自定義的線程序號*/<定義一個互斥信號量>void*terminal(void*p)/*售票終端線程代碼*/{intmynum=*((int*)p);/*本終端的序號*/inttot=0;/*本終端售票計數(shù)*/<你的設計部分>printf(“Terminal_%dselled%dtickets.\n”,mynum,tot);pthread_exit(0);}intmain(){pthread_ttid[2];<初始化信號量>pthread_create(&tid[0],NULL,terminal,&th_num[0]);/*參數(shù)“&th_num[0]”是線程的入口參數(shù)*/pthread_create(&tid[1],NULL,terminal,&th_num[1]);<等待線程終止><撤消信號量><結(jié)束>}問題描述:公共汽車上,司機和售票員的活動分別是:司機的活動:啟動車輛;正常行車;到站停車。售票員的活動:關(guān)車門;售票;開車門。在汽車不斷的到站、停站、行駛過程中,用信號量和P,V操作實現(xiàn)它們的同步。三、實驗結(jié)果測試(粘貼程序源代碼截圖。)/*test6_1.c*/#include<stdio.h>#include<pthread.h>#include<stdlib.h>intticket[10]={1,3,5,7,9,2,4,6,8,10};intrest=10;intth_num[2]={1,2};/*自定義的線程序號*//*<定義一個互斥信號量>*/pthread_mutex_tp_mutex;void*terminal(void*p)/*售票終端線程代碼*/{ intmynum=*((int*)p);/*本終端的序號*/ inttot=0;/*本終端售票計數(shù)*/ longi; /*<你的設計部分參考test_2.c>*/while(1){pthread_mutex_lock(&p_mutex);//lockif(rest>0){//pthread_mutex_lock(&p_mutex);//lock rest--; tot++; for(i=0;i<999999;i++);printf("終端_%d:賣掉1張票,號碼是:%d\n",mynum,ticket[rest]);// pthread_mutex_unlock(&p_mutex);//unlock}else{pthread_mutex_unlock(&p_mutex);//unlockbreak;}pthread_mutex_unlock(&p_mutex);for(i=0;i<999999;i++);}printf("終端_%d一共買掉%d張票.\n",mynum,tot); pthread_exit(0);}intmain(){ pthread_ttid[2]; pthread_mutex_init(&p_mutex,NULL);//初始化信號量/*參數(shù)"&th_num[0]"是線程的入口參數(shù)*/ pthread_create(&tid[0],NULL,terminal,&th_num[0]); pthread_create(&tid[1],NULL,terminal,&th_num[1]);pthread_join(tid[0],NULL);//等待線程終止pthread_join(tid[1],NULL);//等待線程終止pthread_mutex_destroy(&p_mutex);//撤消信號量printf("\n*************OVER*************\n");return0;//結(jié)束}代碼截圖:四、分析與思考在代碼的編寫過程中,往往少
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 1632.1-2024塑料使用毛細管黏度計測定聚合物稀溶液黏度第1部分:通則
- 二零二五年度建筑工程質(zhì)量檢測與施工質(zhì)量控制規(guī)范合同3篇
- 2025年度跨境電商物流配送服務合同范本9篇
- 2024版影院室內(nèi)裝修設計合同書
- 二零二五年度綠色環(huán)保產(chǎn)業(yè)合作框架協(xié)議書范本3篇
- 2025年抵債合同房屋買賣協(xié)議3篇
- 2025年度智能停車場2噸不銹鋼帶打印功能電子地磅秤租賃合同6篇
- 2024版租賃商鋪合同書
- 2024標準型料場地租賃合同模板一
- 二零二五年房產(chǎn)租賃保證金繳納及退還協(xié)議6篇
- 林區(qū)防火專用道路技術(shù)規(guī)范
- 2023社會責任報告培訓講稿
- 2023核電廠常規(guī)島及輔助配套設施建設施工技術(shù)規(guī)范 第8部分 保溫及油漆
- 2025年蛇年春聯(lián)帶橫批-蛇年對聯(lián)大全新春對聯(lián)集錦
- 表B. 0 .11工程款支付報審表
- 警務航空無人機考試題庫及答案
- 空氣自動站儀器運營維護項目操作說明以及簡單故障處理
- 新生兒窒息復蘇正壓通氣課件
- 法律顧問投標書
- 班主任培訓簡報4篇(一)
- 成都市數(shù)學八年級上冊期末試卷含答案
評論
0/150
提交評論