... | @@ -276,7 +276,6 @@ if (x == 5) // The "Check" |
... | @@ -276,7 +276,6 @@ if (x == 5) // The "Check" |
|
```
|
|
```
|
|
race condition이 발생하는 것을 막으려면 shared data에 대한 동기화 처리를 해줘야 한다. 동기화를 처리하는 데는 여러 가지 방법 중에 shared data에 오직 한 개의 thread만 접근 할 수 있게 만드는 class가 Monitor이다.
|
|
race condition이 발생하는 것을 막으려면 shared data에 대한 동기화 처리를 해줘야 한다. 동기화를 처리하는 데는 여러 가지 방법 중에 shared data에 오직 한 개의 thread만 접근 할 수 있게 만드는 class가 Monitor이다.
|
|
|
|
|
|
```
|
|
|
|
**3. System.Threading.Monitor**
|
|
**3. System.Threading.Monitor**
|
|
``` cs
|
|
``` cs
|
|
List<Task> tasks = new List<Task>();
|
|
List<Task> tasks = new List<Task>();
|
... | @@ -326,7 +325,7 @@ lock (rnd) |
... | @@ -326,7 +325,7 @@ lock (rnd) |
|
for (ctr = 0; ctr < 10000; ctr++)
|
|
for (ctr = 0; ctr < 10000; ctr++)
|
|
values[ctr] = rnd.Next(0, 1001);
|
|
values[ctr] = rnd.Next(0, 1001);
|
|
}
|
|
}
|
|
```
|
|
```
|
|
<br>
|
|
<br>
|
|
**4. thread의 동작방식**
|
|
**4. thread의 동작방식**
|
|
* **상시실행**
|
|
* **상시실행**
|
... | | ... | |