linux下利用互斥實現(xiàn)線程訪問共享資源含源文件2
《linux下利用互斥實現(xiàn)線程訪問共享資源含源文件2》由會員分享,可在線閱讀,更多相關(guān)《linux下利用互斥實現(xiàn)線程訪問共享資源含源文件2(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 “計算機(jī)操作?系統(tǒng)”課程設(shè)計大?作業(yè) 一、實驗題目: linux?下利用互斥?實現(xiàn)線程訪?問共享資源? 二、實驗?zāi)康模赫莆站€程創(chuàng)?建和終止,加深對線程?和進(jìn)程概念?的理解,會用同步與?互斥方法實?現(xiàn)線程之間?的通信。 三、實驗內(nèi)容 事先了解操?作系統(tǒng)中經(jīng)?典的生產(chǎn)者?-消費者問題?,安裝lin?ux虛擬機(jī)?(可以用vi?rtual?box或者?vmwar?e軟件)。在linu?x下創(chuàng)建三?個生產(chǎn)者線?程(P1,P2,P3)和一個消費?者線程(C1),生產(chǎn)者和消?費者線程共?享一個長度?為2KB的?環(huán)型公共緩?沖區(qū),生產(chǎn)者向緩?沖區(qū)寫入消?息,消費者從緩?沖區(qū)中取走?消息顯示
2、到?屏幕。只要緩沖區(qū)?未滿,生產(chǎn)者可將?消息送入緩?沖區(qū);只要緩沖區(qū)?未空,消費者可從?緩沖區(qū)取走?一個消息。 每個消息具?下列結(jié)構(gòu)格?式: 消息長度(1個字節(jié)),消息內(nèi)容(n個字節(jié))。 每個生產(chǎn)者?每隔2秒生?產(chǎn)一個消息?加入緩沖區(qū)?,并把消息產(chǎn)?生時間和內(nèi)?容記錄在一?個文本文件?中。P1每次生?產(chǎn)的數(shù)據(jù)為?26個大寫?字母, P2每次生?產(chǎn)的數(shù)據(jù)為?26個小寫?字母,P3每次生?產(chǎn)的數(shù)據(jù)為?10個阿拉?伯?dāng)?shù)字。 消費者C1?每隔3秒讀?取緩沖區(qū)中?的一個消息?并將消息內(nèi)?容顯示到屏?幕上。 用兩種方法?(不采線程用?互斥和采用?線程互斥技?術(shù))編寫上述功?能的程序,對比兩種程?
3、序運行結(jié)果?有何區(qū)別?不采線程用?互斥時存在?什么問題? 備注:編程中用到?的函數(shù) 創(chuàng)建線程函?數(shù):pthre?ad_cr?eate 互斥鎖初始?化:pthre?ad_mu?tex_i?nit 互斥鎖加鎖?:pthre?ad_mu?tex_l?ock 互斥鎖解鎖?:pthre?ad_mu?tex_u?nlock? 四、實驗要求: 每人完成一?份大作業(yè)實?驗報告。報告分設(shè)計?思想、數(shù)據(jù)定義、處理流程、源程序、運行結(jié)果截?圖、設(shè)計體會等?部分。 1) 給出數(shù)據(jù)定?義和詳細(xì)說?明; 2) 給出實現(xiàn)思?想和設(shè)計流?程; 3) 調(diào)試完成源?程序; 4) 屏幕觀察運?行結(jié)果;
4、 5) 總結(jié)自己的?設(shè)計體會; 編程語言及?操作系統(tǒng)平?臺不限。 五、提交內(nèi)容 本大作業(yè)每?個人必須單?獨完成。最后需提交?的內(nèi)容包括?:源程序(關(guān)鍵代碼需?要注釋說明?)、可運行程序?、算法思路及?流程圖、心得體會。大作業(yè)必須?以WORD?附件的形式?提交。 大作業(yè)嚴(yán)禁?抄襲。發(fā)現(xiàn)抄襲一?律以不及格?論。大作業(yè)內(nèi)容?要完整,一定要有算?法思路、流程圖、心得體會、運行輸出信?息截屏等內(nèi)?容,如果只提交?源代碼則大?作業(yè)成績記?為不合格。 2016-10-20 linux?下利用互斥?實現(xiàn)線程訪?問共
5、享資源? 一、原理的理解? 生產(chǎn)者-消費者問題?是一個經(jīng)典?的線程同步?問題,該問題最早?由Dijk?stra提?出,用以演示他?提出的信號?量機(jī)制。在同一個線?程地址空間?內(nèi)執(zhí)行的兩?個線程。生產(chǎn)者線程?生產(chǎn)物品,然后將物品?放置在一個?空緩沖區(qū)中?供消費者線?程消費。消費者線程?從緩沖區(qū)中?獲得物品,然后釋放緩?沖區(qū)。當(dāng)生產(chǎn)者線?程生產(chǎn)物品?時,如果沒有空?緩沖區(qū)可用?,那么生產(chǎn)者?線程必須等?待消費者線?程釋放出一?個空緩沖區(qū)?。當(dāng)消費者線?程消費物品?時,如果沒有滿?的緩沖區(qū),那么消費者?線程將被阻?塞,直到新的物?品被生產(chǎn)出?來。 多個生產(chǎn)/消費者在有?界緩沖上操?作。它利用N
6、個?字節(jié)的共享?內(nèi)存作為有?界循環(huán)緩沖?區(qū),利用寫一字?符模擬放一?個產(chǎn)品,利用讀一字?符模擬消費?一個產(chǎn)品。當(dāng)緩沖區(qū)空?時消費者應(yīng)?阻塞睡眠,而當(dāng)緩沖區(qū)?滿時生產(chǎn)者?應(yīng)當(dāng)阻塞睡?眠。一旦緩沖區(qū)?中有空單元?,生產(chǎn)者線程?就向空單元?中入寫字符?,并報告寫的?內(nèi)容和位置?。一旦緩沖區(qū)?中有未讀過?的字符,消費者線程?就從該單元?中讀出字符?,并報告讀取?位置。生產(chǎn)者不能?向同一單元?中連續(xù)寫兩?次以上相同?的字符,消費者也不?能從同一單?元中連續(xù)讀?兩次以上相?同的字符。 二、完成步驟 1、思路分析 本作業(yè)是完?善課件上的?線程綜合實?例的練習(xí)生?產(chǎn)者-消費者問題?,重構(gòu)這個程?序的框架
7、,完成性能分?析,使之進(jìn)一步?理解掌握L?inux下?線程的同步?、通信以及互?斥和多線程?的安全問題?。 一般情況下?,解決互斥方?法常用信號?量和互斥鎖?,即sema?phore?和mute?x,而解決這個?問題,多采用一個?類似資源槽?的結(jié)構(gòu),每個槽位標(biāo)?示了指向資?源的指針以?及該槽位的?狀態(tài),生產(chǎn)者和消?費者互斥查?詢資源槽,判斷是否有?產(chǎn)品或者有?空位可以生?產(chǎn),然后根據(jù)指?針進(jìn)行相應(yīng)?的操作。同時,為了告訴生?產(chǎn)者或者消?費者資源槽?的情況,還要有一個?消息傳送機(jī)?制,無論是管道?還是線程通?信。 然而,本次試驗有?幾個特殊的?要求: A、循環(huán)緩沖。 B、除了std?er
8、r,stdou?t等外,只用小于2?個的互斥鎖?、 C、放棄資源槽?分配機(jī)制,采用額外的?數(shù)據(jù)結(jié)構(gòu)。 D、生產(chǎn)者一直?持續(xù)生產(chǎn),形成生產(chǎn)消?費的良性循?環(huán)。 首先,使用一個互?斥鎖,意味著資源?槽機(jī)制就不?能使用了。因為資源槽?雖以用一個?互斥鎖完成?,但是需要有?額外的通信?,如果使用管?道通信,則管道也必?須是互斥,這就不滿足?1個互斥鎖?的要求。其次,要求生產(chǎn)者?一直生產(chǎn),這就否定了?另外一種方?法:消費者、生產(chǎn)者的位?置均平等,消費者消費?的時候生產(chǎn)?者不能生產(chǎn)?,生產(chǎn)者生產(chǎn)?的時候消費?者不能消費?。因此,就需要采用?A要求,也就是循環(huán)?鏈表的形式?。 為了保證互?斥要求,需
9、要定義一?個數(shù)據(jù)結(jié)構(gòu)?,這個數(shù)據(jù)結(jié)?構(gòu)包含兩個?指針,一個讀一個?寫,同時有一個?資源數(shù)目量?,告訴生產(chǎn)者?和消費者是?否可以生產(chǎn)?或者消費。由于該數(shù)據(jù)?結(jié)構(gòu)很小,因而可以對?此結(jié)構(gòu)互斥?訪問。同時,對于每組數(shù)?據(jù),都有一個標(biāo)?志位,表示此組數(shù)?據(jù)是否被占?用,生產(chǎn)者和消?費者均可以?先占用此位?置然后完成?相應(yīng)的操作?。 當(dāng)消費者互?斥訪問此結(jié)?構(gòu)時,首先判斷是?否有數(shù)據(jù)可?以取,如果沒有,直接等待,若有數(shù)據(jù)可?取,先更改標(biāo)志?位占用此數(shù)?據(jù),并將資源數(shù)?目-1。然后交出互?斥,把數(shù)據(jù)拷貝?到自己緩沖?區(qū)內(nèi),清空數(shù)據(jù)。當(dāng)生產(chǎn)者訪?問時,首先判斷有?沒有空位可?以生產(chǎn),如果沒有,直接等待,若
10、有數(shù)據(jù)可?以生產(chǎn),先判斷該位?是否被占用?,如果沒被占?用,則占用此位?置進(jìn)行生產(chǎn)?。生產(chǎn)完成后?,將占用位改?為未占用,同時將資源?數(shù)目+1。這個過程可?以如圖所示?: 2、重要函數(shù)和?數(shù)據(jù)結(jié)構(gòu) (1)數(shù)據(jù)結(jié)構(gòu) #defin?e N 5 // 生產(chǎn)者的數(shù)?目 #defin?e N2 15 // 消費者數(shù)目? #defin?e M 20 // 緩沖數(shù)目 #defin?e debug? 0 //調(diào)試模式 #defin?e nowai?t 1 //是否添加額?外等待 pthre?ad_mu?tex_t? mutex?; // 互斥信號量? int pr
11、od_?id = 0; //生產(chǎn)者id? int proc_?id = 0; //消費者id? //成功以及失?敗次數(shù)計數(shù)? int Succ[N+N2]; int Fail[N+N2]; //用于生產(chǎn)的?填充數(shù)據(jù) char dt[30]="aaaaa?aaaaa?bbbbb?bbbbb?ccccc?ccccc?"; int toexi?t=0;//退出標(biāo)記 //共用數(shù)據(jù)區(qū)? struc?t data_?struc? { int Occup?ied; //該位置是否?被占用 無論生產(chǎn)還?是消費 char d[1024]; //數(shù)據(jù) struc?t d
12、ata_?struc?* nx; //下一個指針? }; //互斥量 struc?t mtx { struc?t data_?struc?* rd_p; struc?t data_?struc?* wr_p; int cnt; //產(chǎn)品數(shù)量 }; struc?t mtx *mymut?ex; (2)函數(shù)說明 void print?info();//調(diào)試函數(shù),打印公用數(shù)?據(jù)區(qū)的內(nèi)容?和狀態(tài) void Creat?e_Emp?ty_DS?();//初始化循環(huán)?鏈表 void *buy();//消費者 void *sell();//生產(chǎn)者 void *Recou?
13、nt();//數(shù)據(jù)統(tǒng)計,同時控制程?序自動退出? 3、程序流程圖? A、主函數(shù) B、統(tǒng)計線程 C、生產(chǎn)者線程? D、消費者線程? 三、實驗數(shù)據(jù) 1、程序運行截?圖 虛擬機(jī):VMwar?e Works?tatio?n7.0,win7;硬件:i3,2G DDR13?33;編譯:gcc produ?ct.c –pg –lpthr?ead;報告生成:gprof? –b。 運行時截圖?: CPU占用?情況(無額外等待?): 2、原始數(shù)據(jù) 由于程序要?求使用gp?rof進(jìn)行?分析,而在機(jī)器配?置較好的情?況下,使用gpr?of可能分?析不出每個?
14、函數(shù)執(zhí)行時?間,甚至連函數(shù)?都分析不全?,因而在實際?代碼中添加?了一些空循?環(huán)來增加c?pu占用。 為了更便于?觀察,首先假設(shè)如?下場景:消費者、生產(chǎn)者在執(zhí)?行各自動作?前,均usle?ep(1),同時,消費者在成?功消費之后?,也會usl?eep(3)來為其他消?費者讓位。同時,也將測試沒?有任何等待?的數(shù)據(jù)。程序內(nèi)有一?計時線程,每個一秒會?顯示一次生?產(chǎn)消費情況?,當(dāng)60秒后?程序自動退?出,從而保存數(shù)?據(jù)已被分析?。 生產(chǎn)者數(shù)量? 1 消費者數(shù)量? 1 緩沖長度 20 額外等待 有 CPU占用? <0.3% 函數(shù)分析情?況 無法分析到?消費者、生產(chǎn)者線程?
15、 程序運行情?況 生產(chǎn)者: #1 成功次數(shù):12243? 失敗次數(shù):12213? 消費者: #1 成功次數(shù):12223? 失敗次數(shù):0 生產(chǎn)者數(shù)量? 1 消費者數(shù)量? 1 緩沖長度 20 額外等待 無 CPU占用? >97% 函數(shù)分析情?況 % cumul?ative? self self total? time secon?ds secon?ds calls? Ts/call Ts/call name 54.59 2.08 2.08
16、 buy 45.41 3.81 1.73 sell 0.00 3.81 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS? Call graph? granu?larit?y: each sampl?e hit cover?s 4 byte(s) for 0.26% of 3.81 secon?ds index? % time self child?ren ca
17、lle?d name
18、 [2] ----------------------------------------------- 0.00 0.00 1/1 main [8] [3] 0.0 0.00 0.00 1 Creat?e_Emp?ty_DS? [3] ----------------------------------------------- Index? by funct?ion name [3] Creat?e_Emp?ty_DS? [1] buy
19、 [2] sell 程序運行情?況 生產(chǎn)者: #1 成功次數(shù):21260? 失敗次數(shù):11461?17485? 消費者: #1 成功次數(shù):21240? 失敗次數(shù):11511?77763? 生產(chǎn)者數(shù)量? 1 消費者數(shù)量? 5 緩沖長度 20 額外等待 有 CPU占用? <0.3% 函數(shù)分析情?況 無法分析到?消費者、生產(chǎn)者線程? 程序運行情?況 生產(chǎn)者: #1 成功次數(shù):24829? 失敗次數(shù):0 消費者: #1 成功次數(shù):4900 失敗次數(shù):15102? 消費者: #2 成功次數(shù):5261 失敗
20、次數(shù):14386? ….. 消費者: #5 成功次數(shù):5069 失敗次數(shù):14752? 生產(chǎn)者數(shù)量? 1 消費者數(shù)量? 5 緩沖長度 20 額外等待 無 CPU占用? >97% 函數(shù)分析情?況 % cumul?ative? self self total? time secon?ds secon?ds calls? Ts/call Ts/call name 85.29 2.90 2.90
21、 buy 14.71 3.40 0.50 sell 0.00 3.40 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS? Call graph? granu?larit?y: each sampl?e hit cover?s 4 byte(s) for 0.29% of 3.40 secon?ds index? % time self child?ren calle?d name
22、
23、--------------------------- 0.00 0.00 1/1 main [8] [3] 0.0 0.00 0.00 1 Creat?e_Emp?ty_DS? [3] ----------------------------------------------- Index? by funct?ion name [3] Creat?e_Emp?ty_DS? [1] buy [2] se
24、ll 程序運行情?況 生產(chǎn)者: #1 成功次數(shù):10800? 失敗次數(shù):36294?4304 消費者: #1 成功次數(shù):1980 失敗次數(shù):36898?8095 … 消費者: #5 成功次數(shù):2560 失敗次數(shù):39180?1113 生產(chǎn)者數(shù)量? 3 消費者數(shù)量? 10 緩沖長度 20 額外等待 有 CPU占用? 約4% 函數(shù)分析情?況 % cumul?ative? self self total? time secon?ds secon?ds calls?
25、 Ts/call Ts/call name 94.08 1.59 1.59 sell 5.92 1.69 0.10 buy 0.00 1.69 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS? Call graph? granu?larit?y: each sampl?e hit cover?s 4 byte(s) for 0.59% of
26、 1.69 secon?ds
index? % time self child?ren calle?d name
27、u?s>
[2] 5.9 0.10 0.00 buy [2]
-----------------------------------------------
0.00 0.00 1/1 main [8]
[3] 0.0 0.00 0.00 1 Creat?e_Emp?ty_DS? [3]
-----------------------------------------------
Index? by func 28、t?ion name
[3] Creat?e_Emp?ty_DS? [2] buy [1] sell
程序運行情?況
生產(chǎn)者: #1 成功次數(shù):16167?7 失敗次數(shù):0
生產(chǎn)者: #2 成功次數(shù):16141?2 失敗次數(shù):0
生產(chǎn)者: #3 成功次數(shù):16153?5 失敗次數(shù):0
消費者: #1 成功次數(shù):44264? 失敗次數(shù):75030?
消費者: #2 成功次數(shù):47878? 失敗次數(shù):67808?
消費者: #3 成功次數(shù):47805? 失敗次數(shù):67967?
……
消費者: 29、#10 成功次數(shù):45942? 失敗次數(shù):71664?
生產(chǎn)者數(shù)量?
3
消費者數(shù)量?
10
緩沖長度
20
額外等待
無
CPU占用?
>97%
函數(shù)分析情?況
% cumul?ative? self self total?
time secon?ds secon?ds calls? Ts/call Ts/call name
77.28 2.96 2.96 buy
22.72 30、 3.83 0.87 sell
0.00 3.83 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS?
Call graph?
granu?larit?y: each sampl?e hit cover?s 4 byte(s) for 0.26% of 3.83 secon?ds
index? % time self child?ren calle?d name
31、 32、----------
0.00 0.00 1/1 main [8]
[3] 0.0 0.00 0.00 1 Creat?e_Emp?ty_DS? [3]
-----------------------------------------------
Index? by funct?ion name
[3] Creat?e_Emp?ty_DS? [1] buy [2] sell
程序運行情?況
生產(chǎn)者: 33、 #1 成功次數(shù):4640 失敗次數(shù):17418?4091
生產(chǎn)者: #2 成功次數(shù):4000 失敗次數(shù):17972?4333
生產(chǎn)者: #3 成功次數(shù):4120 失敗次數(shù):17001?8676
消費者: #1 成功次數(shù):1280 失敗次數(shù):18220?5853
消費者: #2 成功次數(shù):1340 失敗次數(shù):17304?4281
…..
消費者: #9 成功次數(shù):1020 失敗次數(shù):16687?7134
消費者: #10 成功次數(shù):1380 失敗次數(shù):16480?3475
生產(chǎn)者數(shù)量?
5
消費者數(shù)量?
20
緩沖長度
40
額外等待 34、
有
CPU占用?
約9%
函數(shù)分析情?況
% cumul?ative? self self total?
time secon?ds secon?ds calls? Ts/call Ts/call name
96.37 4.25 4.25 sell
3.63 4.41 0.16 buy
0.00 4.41 35、 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS?
Call graph?
granu?larit?y: each sampl?e hit cover?s 4 byte(s) for 0.23% of 4.41 secon?ds
index? % time self child?ren calle?d name
36、 sell [1]
-----------------------------------------------
37、[3] 0.0 0.00 0.00 1 Creat?e_Emp?ty_DS? [3]
-----------------------------------------------
Index? by funct?ion name
[3] Creat?e_Emp?ty_DS? [2] buy [1] sell
程序運行情?況
生產(chǎn)者: #1 成功次數(shù):13968?9 失敗次數(shù):0
生產(chǎn)者: #2 成功次數(shù):13923?5 失敗次數(shù):0
….
生產(chǎn)者: #5 38、成功次數(shù):13780?1 失敗次數(shù):0
消費者: #1 成功次數(shù):25922? 失敗次數(shù):96488?
消費者: #2 成功次數(shù):39009? 失敗次數(shù):70402?
消費者: #3 成功次數(shù):39645? 失敗次數(shù):69154?
…..
消費者: #20 成功次數(shù):33775? 失敗次數(shù):80811?
生產(chǎn)者數(shù)量?
5
消費者數(shù)量?
20
緩沖長度
40
額外等待
無
CPU占用?
>97%
函數(shù)分析情?況
% cumul?ative? self self total? 39、
time secon?ds secon?ds calls? Ts/call Ts/call name
80.29 2.81 2.81 buy
19.71 3.50 0.69 sell
0.00 3.50 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS?
Call graph?
granu?larit?y: each sa 40、mpl?e hit cover?s 4 byte(s) for 0.29% of 3.50 secon?ds
index? % time self child?ren calle?d name
41、 42、------------------------
Index? by funct?ion name
[3] Creat?e_Emp?ty_DS? [1] buy [2] sell
程序運行情?況
生產(chǎn)者: #1 成功次數(shù):4120 失敗次數(shù):81703?999
….
生產(chǎn)者: #5 成功次數(shù):4200 失敗次數(shù):91874?644
消費者: #1 成功次數(shù):1080 失敗次數(shù):83483?253
消費者: #2 成功次數(shù):1240 失敗次數(shù):85970?149
消費者: #3 成功次數(shù):1360 43、 失敗次數(shù):10626?5813
消費者: #4 成功次數(shù):960 失敗次數(shù):82522?392
消費者: #5 成功次數(shù):1360 失敗次數(shù):93462?020
消費者: #6 成功次數(shù):1160 失敗次數(shù):91337?608
消費者: #7 成功次數(shù):1520 失敗次數(shù):10295?4859
消費者: #8 成功次數(shù):1080 失敗次數(shù):91363?902
消費者: #9 成功次數(shù):760 失敗次數(shù):10531?9175
消費者: #10 成功次數(shù):1320 失敗次數(shù):10214?4117
消費者: #11 成功次數(shù):720 失敗次數(shù):909 44、33?552
消費者: #12 成功次數(shù):1120 失敗次數(shù):90537?228
消費者: #13 成功次數(shù):920 失敗次數(shù):90670?465
消費者: #14 成功次數(shù):840 失敗次數(shù):10915?3419
消費者: #15 成功次數(shù):1320 失敗次數(shù):91949?204
消費者: #16 成功次數(shù):960 失敗次數(shù):80094?023
消費者: #17 成功次數(shù):1120 失敗次數(shù):81866?777
消費者: #18 成功次數(shù):1000 失敗次數(shù):87802?980
消費者: #19 成功次數(shù):800 失敗次數(shù):79470?741
45、
消費者: #20 成功次數(shù):960 失敗次數(shù):93098?801
生產(chǎn)者數(shù)量?
30
消費者數(shù)量?
100
緩沖長度
200
額外等待
有
CPU占用?
26%
函數(shù)分析情?況
% cumul?ative? self self total?
time secon?ds secon?ds calls? Ts/call Ts/call name
79.17 10.49 10.49 sell
46、 20.83 13.25 2.76 buy
0.00 13.25 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS?
Call graph?
granu?larit?y: each sampl?e hit cover?s 4 byte(s) for 0.08% of 13.25 secon?ds
index? % time self child?ren calle?d name
47、 48、-------------------
0.00 0.00 1/1 main [8]
[3] 0.0 0.00 0.00 1 Creat?e_Emp?ty_DS? [3]
-----------------------------------------------
Index? by funct?ion name
[3] Creat?e_Emp?ty_DS? [2] buy [1] sell
程序運行 49、情?況
生產(chǎn)者: #1 成功次數(shù):24555? 失敗次數(shù):0
生產(chǎn)者: #2 成功次數(shù):24423? 失敗次數(shù):0
生產(chǎn)者: #3 成功次數(shù):24529? 失敗次數(shù):0
生產(chǎn)者: #4 成功次數(shù):24428? 失敗次數(shù):0
…..
生產(chǎn)者: #8 成功次數(shù):24552? 失敗次數(shù):0
生產(chǎn)者: #9 成功次數(shù):24467? 失敗次數(shù):0
生產(chǎn)者: #10 成功次數(shù):24612? 失敗次數(shù):0
…………………………….
生產(chǎn)者: #29 成功次數(shù):24439? 失敗次數(shù):0
生產(chǎn)者: #30 成功次數(shù):24723? 失敗次數(shù):0
消費者 50、: #1 成功次數(shù):7351 失敗次數(shù):16473?
消費者: #2 成功次數(shù):6408 失敗次數(shù):18192?
消費者: #3 成功次數(shù):6725 失敗次數(shù):17620?
…….
消費者: #8 成功次數(shù):7830 失敗次數(shù):15630?
消費者: #9 成功次數(shù):7264 失敗次數(shù):16677?
………
消費者: #97 成功次數(shù):6628 失敗次數(shù):17780?
消費者: #98 成功次數(shù):7200 失敗次數(shù):16692?
消費者: #99 成功次數(shù):6921 失敗次數(shù):17335?
消費者: #100 成功次數(shù):7433 失敗次數(shù) 51、:16319?
生產(chǎn)者數(shù)量?
30
消費者數(shù)量?
100
緩沖長度
200
額外等待
無
CPU占用?
>97%
函數(shù)分析情?況
% cumul?ative? self self total?
time secon?ds secon?ds calls? Ts/call Ts/call name
78.77 2.82 2.82 buy
21.23 3.58 0.76 52、 sell
0.00 3.58 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS?
Call graph?
granu?larit?y: each sampl?e hit cover?s 4 byte(s) for 0.28% of 3.58 secon?ds
index? % time self child?ren calle?d name
53、 54、 0.00 0.00 1/1 main [8]
[3] 0.0 0.00 0.00 1 Creat?e_Emp?ty_DS? [3]
-----------------------------------------------
Index? by funct?ion name
[3] Creat?e_Emp?ty_DS? [1] buy [2] sell
程序運行情?況
生產(chǎn)者: #1 成功次數(shù):3600 失敗次 55、數(shù):10645?017
生產(chǎn)者: #2 成功次數(shù):4000 失敗次數(shù):16728?291
生產(chǎn)者: #3 成功次數(shù):3200 失敗次數(shù):17111?918
生產(chǎn)者: #4 成功次數(shù):3400 失敗次數(shù):10212?130
……
生產(chǎn)者: #17 成功次數(shù):1400 失敗次數(shù):15370?944
生產(chǎn)者: #18 成功次數(shù):2200 失敗次數(shù):21377?626
生產(chǎn)者: #19 成功次數(shù):2600 失敗次數(shù):11692?857
生產(chǎn)者: #20 成功次數(shù):3800 失敗次數(shù):16007?285
生產(chǎn)者: #21 成功次數(shù):2200 失敗次數(shù):1 56、4244?794
生產(chǎn)者: #22 成功次數(shù):3600 失敗次數(shù):22401?337
…..
生產(chǎn)者: #29 成功次數(shù):4000 失敗次數(shù):18425?015
生產(chǎn)者: #30 成功次數(shù):4800 失敗次數(shù):25033?822
消費者: #1 成功次數(shù):1800 失敗次數(shù):12785?639
消費者: #2 成功次數(shù):2800 失敗次數(shù):16116?393
消費者: #3 成功次數(shù):2400 失敗次數(shù):10309?678
消費者: #4 成功次數(shù):800 失敗次數(shù):24464?415
消費者: #52 成功次數(shù):0 失敗次數(shù):13483?90 57、7
消費者: #53 成功次數(shù):0 失敗次數(shù):20152?736
消費者: #54 成功次數(shù):0 失敗次數(shù):14236?228
消費者: #55 成功次數(shù):800 失敗次數(shù):21535?076
消費者: #56 成功次數(shù):400 失敗次數(shù):18554?678
消費者: #57 成功次數(shù):200 失敗次數(shù):20539?844
消費者: #58 成功次數(shù):800 失敗次數(shù):12377?087
…….
消費者: #94 成功次數(shù):1600 失敗次數(shù):14401?603
消費者: #95 成功次數(shù):2000 失敗次數(shù):24301?257
消費者: # 58、96 成功次數(shù):1800 失敗次數(shù):15476?220
消費者: #97 成功次數(shù):2600 失敗次數(shù):17645?168
消費者: #98 成功次數(shù):1000 失敗次數(shù):15002?154
消費者: #99 成功次數(shù):200 失敗次數(shù):14299?381
消費者: #100 成功次數(shù):1600 失敗次數(shù):21723?729
生產(chǎn)者數(shù)量?
50
消費者數(shù)量?
200
緩沖長度
500
額外等待
有
CPU占用?
>97%
函數(shù)分析情?況
% cumul?ative? self self t 59、otal?
time secon?ds secon?ds calls? Ts/call Ts/call name
98.61 50.26 50.26 sell
1.39 50.97 0.71 buy
0.00 50.97 0.00 1 0.00 0.00 Creat?e_Emp?ty_DS?
Call graph?
granu? 60、larit?y: each sampl?e hit cover?s 4 byte(s) for 0.02% of 50.97 secon?ds
index? % time self child?ren calle?d name
61、 62、-----------------------------------------
Index? by funct?ion name
[3] Creat?e_Emp?ty_DS? [2] buy [1] sell
程序運行情?況
生產(chǎn)者: #1 成功次數(shù):14839? 失敗次數(shù):0
生產(chǎn)者: #2 成功次數(shù):14688? 失敗次數(shù):0
生產(chǎn)者: #3 成功次數(shù):14838? 失敗次數(shù):0
生產(chǎn)者: #4 成功次數(shù):14738? 失敗次數(shù):0
………..
…..
生產(chǎn)者: #49 成功次數(shù):1 63、4908? 失敗次數(shù):0
生產(chǎn)者: #50 成功次數(shù):14949? 失敗次數(shù):0
消費者: #1 成功次數(shù):3602 失敗次數(shù):20037?
消費者: #2 成功次數(shù):3777 失敗次數(shù):19650?
消費者: #3 成功次數(shù):3655 失敗次數(shù):19907?
消費者: #4 成功次數(shù):3909 失敗次數(shù):19429?
消費者: #5 成功次數(shù):3744 失敗次數(shù):19693?
………
消費者: #200 成功次數(shù):3590 失敗次數(shù):19568?
生產(chǎn)者數(shù)量?
50
消費者數(shù)量?
50
緩沖長度
200
額外等待
無
CPU 64、占用?
>97%
函數(shù)分析情?況
% cumul?ative? self self total?
time secon?ds secon?ds calls? Ts/call Ts/call name
51.80 1.87 1.87 buy
48.20 3.61 1.74 sell
0.00 3.61 0.00 65、 1 0.00 0.00 Creat?e_Emp?ty_DS?
Call graph?
granu?larit?y: each sampl?e hit cover?s 4 byte(s) for 0.28% of 3.61 secon?ds
index? % time self child?ren calle?d name
66、 buy [1]
-----------------------------------------------
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案