Re: [問題] 三個執行緒循環互鎖

看板C_Sharp (C#)作者 (eric)時間18年前 (2007/01/05 19:33), 編輯推噓3(303)
留言6則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《ko1 (接逃獄 請寄信)》之銘言: : public class a : { : public void method1(){} : public void method2(){} : public void method3(){} : } : 在其他地方產生A的物件o : 然後分別產生thread去執行o.method1 o.method2 o.method3 : 希望達到 : o.method1執行過才執行o.method2 : o.method2執行過才執行o.method3 : o.method3執行過才執行o.method1 : 的循環 : 請問該如何去進行? : ---- : 在2個互鎖的情形下 只要設一個bool變數去判斷二個method誰可以動作 : 在3個的情況下 我卻搞不清楚 該如何去設定 : 在其中一個method放出 Monitor.Pulse(); 去指定另外某一個method可以動作? 我不大清楚你的狀況 下面code可參考一下 ~ class a { public void Method1() { Console.WriteLine("Method 1"); } public void Method2() { Console.WriteLine("Method 2"); } public void Method3() { Console.WriteLine("Method 3"); } } class Program { static void Main(string[] args) { a o = new a(); for (int i = 0; i<2;i++ ) { Thread loThread1 = new Thread(new ThreadStart(o.Method1)); Thread loThread2 = new Thread(new ThreadStart(o.Method2)); Thread loThread3 = new Thread(new ThreadStart(o.Method3)); loThread1.Start(); loThread1.Join(); loThread2.Start(); loThread2.Join(); loThread3.Start(); loThread3.Join(); Console.WriteLine("Done"); Thread.Sleep(2000); } } } ****************** Join 是你要的感覺嗎 ? @@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.197.91

01/05 23:10, , 1F
謝謝 但好像不是我想要的功能耶@@ 3個method都是無限回圈
01/05 23:10, 1F

01/05 23:11, , 2F
我希望一直執行 但是每一輪 都要2等1結束 3等2結束 1等3結束
01/05 23:11, 2F

01/05 23:13, , 3F
才開始執行
01/05 23:13, 3F

01/06 01:22, , 4F
用lock搭配pulse()以及一個bool變數不曉得能不能達成@@"
01/06 01:22, 4F

01/06 03:03, , 5F
1送出的pulse()可能被2接收 也可能被3接收 我不知道如何去設QQ
01/06 03:03, 5F

01/06 03:05, , 6F
1固定只讓2接收 2固定只讓3接收 3固定只讓1接收
01/06 03:05, 6F
文章代碼(AID): #15dZT-58 (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #15dZT-58 (C_Sharp)