急请求教线程相斥问题
我有两个线程,现在同访问一个方法,但我不想两个线程能够同时访问到这个方法
private void TimeControllor()
{
Runner = new Thread(new ParameterizedThreadStart(RotationLoop));
Runner.IsBackground = true;
Runner.Start();
}
private void Loop()
{
while(true)
{
RotationCommand("Stop");
Thread.Sleep(3000);
RotationCommand("Run");
Thread.Sleep(5000);
}
}
private void RotationCommand(string Behavie)
{
//...............
}
private void TimeControllor2()
{
Runner2 = new Thread(new ParameterizedThreadStart(Loop2));
Runner2.IsBackground = true;
Runner2.Start();
}
private void Loop2()
{
while(true)
{
RotationCommand("NoRun");
Thread.Sleep(1000);
}
}
void Main()
{
//实际这两个方法的调用在程序的不同位置,暂写在一起
TimeControllor2();
TimeControllor();
}
我需要TimeControllor();在执行时,TimeControllor2();能够等待TimeControllor();执行完成,再继续执行TimeControllor2();。因为我这两个线程都用来计时,所以同时需要。我现在遇到的问题是,两个线程有时会同步,同时去访问RotationCommand方法,这是我不希望看到的。
任何方法都可以,只要保证两个线程不要同步执行就好。
PS:我自己做过了委托,试图暂停TimeControllor2();的线程,当TimeControllor();执行完成后再恢复线程,但发现计时变得不规律,差距很小但这不是我想要的。
谢谢~~