C# -- 使用线程池 ThreadPool 执行多线程任务
发布时间:2020-12-15 04:45:18 所属栏目:百科 来源:网络整理
导读:C# -- 使用线程池 ThreadPool 执行多线程任务 1. 使用线程池 Main( = s => = result = SumNumbers( = s => = s => ThreadPool.QueueUserWorkItem(wc1); ThreadPool.QueueUserWorkItem(wc2); ThreadPool.QueueUserWorkItem(wc3); Console.ReadKey(); } /spans
C# -- 使用线程池 ThreadPool 执行多线程任务 1. 使用线程池 Main(= s =>= result = SumNumbers(= s =>= s =>
ThreadPool.QueueUserWorkItem(wc1);
ThreadPool.QueueUserWorkItem(wc2);
ThreadPool.QueueUserWorkItem(wc3);
Console.ReadKey();
}
</span><span style="color: #0000ff">static</span> <span style="color: #0000ff">long</span> SumNumbers(<span style="color: #0000ff">int</span><span style="color: #000000"> count)
{
</span><span style="color: #0000ff">long</span> sum = <span style="color: #800080">0</span><span style="color: #000000">;
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = <span style="color: #800080">0</span>; i < count; i++<span style="color: #000000">)
{
sum </span>+=<span style="color: #000000"> i;
}
Thread.Sleep(</span><span style="color: #800080">1000</span><span style="color: #000000">);
</span><span style="color: #0000ff">return</span><span style="color: #000000"> sum;
}
}</span></pre>
执行结果: 2. 等待线程池的线程执行 Main( (ManualResetEvent m1 = ManualResetEvent( (ManualResetEvent m2 = ManualResetEvent( (ManualResetEvent m3 = ManualResetEvent(=>= result = SumNumbers(
ThreadPool.QueueUserWorkItem(
s </span>=><span style="color: #000000">{
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},Thread.CurrentThread.ManagedThreadId);
Stopwatch stw </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> Stopwatch();
stw.Start();
</span><span style="color: #0000ff">long</span> result = SumNumbers(<span style="color: #800080">10000000</span><span style="color: #000000">);
stw.Stop();
m2.Set();
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},stw.ElapsedMilliseconds);
});
ThreadPool.QueueUserWorkItem(
s </span>=><span style="color: #000000">{
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},Thread.CurrentThread.ManagedThreadId);
Stopwatch stw </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> Stopwatch();
stw.Start();
</span><span style="color: #0000ff">long</span> result = SumNumbers(<span style="color: #800080">10000000</span><span style="color: #000000">);
stw.Stop();
m3.Set();
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},stw.ElapsedMilliseconds);
});
</span><span style="color: #008000">//</span><span style="color: #008000">等待线程池的线程执行</span>
<span style="color: #000000"> m1.WaitOne();
执行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |