C 多執行緒 優先佇列模擬印表機任務管理

2021-10-05 16:50:46 字數 2297 閱讀 2362

效果圖:

//用來記錄總任務數

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...