C 程式設計任務 把工作交給別人並等待其執行完成

2022-01-11 12:06:51 字數 861 閱讀 6391

生活中有這樣的場景: 

我有一件事情需要別人幫忙去辦, 但是別人也很忙呀, 所以我只能把任務記載他的任務清單上, 等他乙個個掃下來掃到我的並且完成之後再來告訴我.

這其實是乙個多執行緒的問題. 我是執行緒a, 他是執行緒b, 這裡我是生產者, 他是消費者. 而我在等待他完成我提交的任務之前並不能做什麼事情, 也就是說我, 執行緒a, 得阻塞等待b執行完我的任務並來通知我. 

貌似實現起來挺簡單, 乙個死迴圈加乙個bool就可以了. 在任務obj中加bool iscompleted=false; 當執行緒b執行完成之後設定成true. 而我就while(!iscompleted);死等就可以了. 嗯, 這裡的死等可能會讓單核cpu100%那麼while(!iscompleted)這樣就完美了.

確實不錯, 但是能不能優雅一點? 

比如使用monitor. 我翻了一下msdn...沒什麼想說的了, 這個sample寫的跟直接叫你去使用lock關鍵字一樣.

對於大多數情況下的執行緒資源加鎖, 其實使用關鍵字lock真的可以了. 但是在這個情況下, 需要用到另外兩個函式:

monitor.wait()和monitor.pulse()

**如下:

static

void

monitorsample()

);t.start();

monitor.wait(obj);

console.writeline(datetime.now);

console.writeline(

"over");

console.readkey();

}

跑一遍再看看函式說明就清楚了. 

注意實際使用中最好加上try{}finally

C 程式設計任務 把工作交給別人並等待其執行完成

生活中有這樣的場景 我有一件事情需要別人幫忙去辦,但是別人也很忙呀,所以我只能把任務記載他的任務清單上,等他乙個個掃下來掃到我的並且完成之後再來告訴我.這其實是乙個多執行緒的問題.我是執行緒a,他是執行緒b,這裡我是生產者,他是消費者.而我在等待他完成我提交的任務之前並不能做什麼事情,也就是說我,執...

把C 學再好,也無法憑這個找到好工作

語言本身方面,可能會問問虛函式和多型,過載,作用域,儲存方式,位元組對齊,一般問的不多,或者根本不問 相反,對待你不懂xx語言上,往往表現的相當寬容,我面試時坦言自己只會一點c,對方也表示沒有關係,而我目標職位沒有乙個跟c是有點關係的 比較重要的是,基本資料結構和演算法,大規模資料處理技巧,程序,執...

把C 學再好,也無法憑這個找到好工作

做過無數筆試題,做過無數面試題,基本上沒遇到過很重視語言細節的 語言本身方面,可能會問問虛函式和多型,過載,作用域,儲存方式,位元組對齊,一般問的不多,或者根本不問 相反,對待你不懂xx語言上,往往表現的相當寬容,我面試時坦言自己只會一點c,對方也表示沒有關係,而我目標職位沒有乙個跟c是有點關係的 ...