... | ... | @@ -31,6 +31,7 @@ |
|
|
* [6-2 System.Threading.Monitor](#monitor)
|
|
|
* [6-3 System.Threading.Interlocked](#interlocked)
|
|
|
* [6-4 System.Threading.ThreadPool](#threadpool)
|
|
|
* [6-5 System.Threading.EventWaitHandle](#eventwaithandle)
|
|
|
|
|
|
-- -- --
|
|
|
|
... | ... | @@ -1495,3 +1496,27 @@ class InterlockedEx |
|
|
```
|
|
|
|
|
|
### ThreadPool
|
|
|
스레드 중에는 특정 연산만을 수행할 목적으로 임시적으로 생겼다가 사라지는 일회성 스레드가 있다. 이런 일회성 스레드를 위해서 제공되는 것이 스레드 풀이다. 간단한 연산을 위해서 스레드를 생성/삭제하는 것 보다는 스레드 풀을 이용하는 것이 좀 더 나은 성능을 보인다.
|
|
|
|
|
|
```c#
|
|
|
public static void Main()
|
|
|
{
|
|
|
MyData data = new MyData();
|
|
|
|
|
|
//Thread t1 = new Thread(ThreadFunc);
|
|
|
//Thread t2 = new Thread(ThreadFunc);
|
|
|
|
|
|
ThreadPool.QueueUserWorkItem(ThreadFunc, data); //이렇게도 사용 가능하다.
|
|
|
ThreadPool.QueueUserWorkItem(ThreadFunc, data);
|
|
|
|
|
|
t1.Start(data);
|
|
|
t2.Start(data);
|
|
|
|
|
|
t1.Join();
|
|
|
t2.Join();
|
|
|
|
|
|
Console.WriteLine(data.Number);
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### EventWaitHandle |