110,533
社区成员
发帖
与我相关
我的任务
分享
static void Main(string[] args)
{
int order = 0;//, -1 for exit , 0 for initialize
int ordermax = 0;//最大编号
ParameterizedThreadStart threadProc = p =>
{
if (!(p is int)) return;
int myOrder = (int)p;
object sync = new object();
while (true)
{
lock (sync)//同步线程
{
if (order != myOrder)//判断状态机当前状态是否是到自己执行
{
Thread.Sleep(50);//阻塞自己线程50毫秒后继续下一次检测
continue;
}
Console.WriteLine(p);//实际操作
order++;//在lock块中,安全的操作状态
if (order > ordermax) order = 1;//循环状态
}
Thread.Sleep(50);
}
};
new Thread(threadProc).Start(1);//启动1个线程,编号1
new Thread(threadProc).Start(2);//启动1个线程,编号2
new Thread(threadProc).Start(3);//启动1个线程,编号3
new Thread(threadProc).Start(4);//启动1个线程,编号4
ordermax = 4;//最大值4
order = 1;//当前状态1,开始启动
Console.ReadKey();
}