需求:现在有两个任务,任务1和任务2,任务1中有多个线程,并且任务2必须等任务1完成后才能执行。
namespace TThread
{
class Program
{
static void Main(string[] args)
{
int num = 100;
TheadInfo[] threadInfos = new TheadInfo[num];
for(int i = 0; i< num; i++)
{
TheadInfo theadInfo = new TheadInfo();
theadInfo.ThreadName = "Thread" + i;
theadInfo.ThreadStatus = '0';
threadInfos[i] = theadInfo;
}
for(int i = 0; i < num; i++)
{
TMyThread myThread = new TMyThread();
myThread.theadInfo = threadInfos[i];
Thread thd = new Thread(myThread.DoWork);
thd.Start();
}
bool hasFinished = true;
//增加死循环,判断线程是否全部结束
while (true)
{
hasFinished = true;
Thread.Sleep(1000); //暂停1s钟,让配对的线程有匹配的机会
foreach (TheadInfo item in threadInfos)
{
Console.WriteLine(item.ThreadName+" "+item.ThreadStatus);
if (item.ThreadStatus == '0')
{
hasFinished = false;
break;
}
}
if (hasFinished)
break;
}
Console.WriteLine("All Threads Finished");
Console.ReadKey();
}
}
class TheadInfo
{
public string ThreadName;
public char ThreadStatus;
}
class TMyThread
{
public TheadInfo theadInfo;
public void DoWork()
{
Console.WriteLine("线程 "+ theadInfo.ThreadName + "开始");
Thread.Sleep(500);
theadInfo.ThreadStatus = '1';
Console.WriteLine("线程 " + theadInfo.ThreadName + "结束");
}
}
}