C 多執行緒學習 三 生產者和消費者

2021-09-08 02:17:27 字數 1258 閱讀 8258

using system;

using system.threading;

public

class cell

catch (synchronizationlockexception e)

catch (threadinterruptedexception e)

}

console.writeline(

"consume: 

", cellcontents);

readerflag = 

false;                

//重置readerflag標誌,表示消費行為已經完成   

monitor.pulse(

this);                 

//通知writetocell()方法(該方法在另外乙個執行緒中執行,等待中) 

}return cellcontents;

}public

void writetocell(

int n)

catch (synchronizationlockexception e)

catch (threadinterruptedexception e)

}

cellcontents = n;

console.writeline(

"produce: 

", cellcontents);

readerflag = 

true;

monitor.pulse(

this);

//通知另外乙個執行緒中正在等待的readfromcell()方法    }}

public

class cellprod

public

void threadrun()

}

public

class cellcons

public

void threadrun()

}

public

class monitorsample

catch (threadstateexception e)

catch (threadinterruptedexception e)

//儘管main()函式沒有返回值,但下面這條語句可以向父程序返回執行結果 

environment.exitcode = result;}}

}

c#多執行緒學習(三) 生產者和消費者:

C 多執行緒 三 生產者和消費者

前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...

C 多執行緒學習 三 生產者和消費者

前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...

C 多執行緒學習 三 生產者和消費者

前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...