比如下面的例子:
Code
//工作函数:输出n的值
public static void WorkFunction(object n)
{
Console.Write(n + "\t");
}
static void Main(string[] args)
{
//向线程池中添加100个任务
for (int n = 1; n <= 100; n++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorkFunction), n);
//Console.Write("a");
}
Console.WriteLine("Main");
}
输出的结果总是Main,或者再加少数几个数字。
另外,主线程和线程池里的线程的优先级是相同的吗?
谢谢
主线程结束时,线程池还没执行完毕但也被销毁,所以每次总输出主线程结果和少数线程池中的结果;
优先级应该是默认的基本,此种线程池的中线程的优先级不受程序控制;
bool isOk = false;
while(isOk)
{
Thread.Sleep(1000);
}
for(int n=1;n<=100;n++)
{
ThreadPool.QueueUserWorkItem((o) ={
Console.Write(n + "\t");
isok = n == 100;
});
}
通过EventWaitHandle进行线程同步