效果圖:
//用來記錄總任務數
int n;
//用來記錄當次輸入的任務數量
int cur =0;
int pre =0;
critical_section printer;
//定義printer臨界區資源變數
#define maxsize 2
//列印佇列的最大長度
struct job
;//任務結構體的建立
priority_queue work, q;
job job[
100000];
int done[
100000];
dword thread_1, thread_2;
handle hthread_1, hthread_2;
bool
operator
<
(const job& s1,
const job& s2)
void
lock()
void
unlock()
dword callback work_add
(lpvoid param)
for(
int i = cnt; i < n + cnt; i++
)for
(int i = cnt; i < n + cnt; i++)}
if(work.
size()
>0)
}for
(int i =
0; i < cur; i++
) work.
push
(q.top()
);//列印任務入隊
int x = q.
top(
).id;
q.pop();
cout <<
"作業序號"
<< x <<
"進入列印佇列準備列印"
<< endl;
} cnt +
= n;
//記錄總任務數
}unlock()
;//停止占用臨界區資源
}return0;
}dword callback work_print
(lpvoid param)
auto t2 =
clock()
; cout <<
"] 100%"
<<
" 列印耗時:"
<<
(t2 - t1)
/1000
<<
"s"<< endl;
cout <<
"第"<
top(
).id]+1
<<
"份 "
<<
"任務序號"
<< work.
top(
).id <<
" 列印完成:"
<< work.
top(
).print_work << endl;
done[work.
top(
).id]++;
work.
pop();
pre++;}
} cout <<
"列印結束........"
<< endl << endl;
unlock()
;while
(work.
empty()
)sleep(0
);}return0;
}void
createprinterthread()
hthread_2 =
createthread
(null,0
, work_print,
null,0
,&thread_2);if
(hthread_2 ==
null)}
intmain()
多執行緒14 模擬訊息佇列
1.模擬queue author alienware public class myqueue public void put object obj catch interruptedexception e list.add obj count.getandincrement count syste...
C 多執行緒 優先順序
在我的公司這裡,因為要跟很多特殊的裝置打交道,所以會用到多執行緒的東西,那麼我們在進行多執行緒處理的時候,怎麼去設定優先順序 執行緒裡有個屬性priority可以用來設定優先順序,我設定執行緒1的優先順序高於執行緒2的優先順序,那麼執行緒1就會比執行緒2多執行一段時間,這個是人眼觀察不出來的 執行速...
多執行緒, 執行緒佇列
self performselectoronmainthread selector refreshcellforliveid withobject userinfo waituntildone yes 該方法的作用是在主線程中,執行制定的方法 塊 引數 selector refreshcellfor...