作者Eric30 (eric)
看板C_Sharp
标题Re: [问题] 三个执行绪循环互锁
时间Fri Jan 5 19:50:35 2007
※ 引述《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
1F:推 ko1:谢谢 但好像不是我想要的功能耶@@ 3个method都是无限回圈 01/05 23:10
2F:→ ko1:我希望一直执行 但是每一轮 都要2等1结束 3等2结束 1等3结束 01/05 23:11
3F:→ ko1:才开始执行 01/05 23:13
4F:推 casiopea:用lock搭配pulse()以及一个bool变数不晓得能不能达成@@" 01/06 01:22
5F:推 ko1:1送出的pulse()可能被2接收 也可能被3接收 我不知道如何去设QQ 01/06 03:03
6F:→ ko1:1固定只让2接收 2固定只让3接收 3固定只让1接收 01/06 03:05