본문 바로가기

Programming/Thread

Threading in C# 4.락 (Lock) M본 글은 Threading in C# - Getting Started 의 내용을 번역한 내용입니다.4. 락 (Lock) 개요독점 락은 어떤 코드 블럭에 대해 항상 하나의 쓰레드만이 실행될 것을 보장하기 위해 사용됩니다. 가장 주요한 독점 락으로서는 Lock과 Mutex가 있습니다. 이 두 개 중에서는 Lock쪽이 가장 빠르게 사용할 수 있으며 간단합니다. 하지만 Mutex는 다른 프로세서에서 동작하는 어플리케이션 간에 독점 락을 거는 것이 가능합니다. 이 장에서는 우선 Lock의 사용 방법부터 시작해서 그 후에 Mutex와 Semaphores(비독점 락)에 대해서 설명합니다. 나중에 reader/writer locks에 대해서 설명합니다. .NET 4.0부터는 상당히 높은 고부하적인 병렬처리 상태에서의.. 더보기
Threading in C# 3.동기화 처리의 기초 본 글은 Threading in C# - Getting Started 의 내용을 번역한 내용입니다.3. 동기화 처리의 기초 동기처리지금까지 Task를 사용하여 쓰레드를 기동하는 방법과 메인 쓰레드와 백그라운드 쓰레드 간에 데이터를 주고 받는 방법을 설명했었습니다. 또한 지역 변수가 어떻게 쓰레드 마다 분리되어 있는지, 또한 참조형이 어떻게 해서 쓰레드 간에 공유되는 지도 설명했으며, 공유된 변수에 대해서의 처리도 설명했었습니다. 다음은 동기에 대해서 설명합니다. 동기를 사용하면 복수의 쓰레드로부터의 조작을 조절하여 예측 가능한 결과를 도출하는 것이 가능합니다. 동기 처리는 공유된 같은 데이터에 관해 복수의 쓰레드로부터 접근할 경우에 특히 중요합니다. 동기를 사용한다고 한다면 이러한 문제에 대해서 상당히 .. 더보기
Threading in C# 2.쓰레드의 개념(2) 본 글은 Threading in C# - Getting Started 의 내용을 번역한 내용입니다.지난 번 쓰레드의 개념 (1)에 이어 설명합니다. 2. 쓰레드의 개념(2) 쓰레드의 우선 순위쓰레드의 우선 순위에 따라 쓰레드가 다른 쓰레드와 비교해서 상대적으로 얼마나 CPU 시간을 취득할 것인지를 결정합니다. 쓰레드 우선 순위에는 아래의 값 중 하나를 지정합니다. enum ThreadPriority { Lowest, BelowNormal, Normal, AboveNormal, Highest } 이 값은 복수의 쓰레드가 동시에 실행되고 있는 경우에만 의미를 갖습니다. 쓰레드의 우선 순위를 변경하는 것에는 신중해야 합니다. 우선 순위의 변경에 의해 다른 쓰레드의 동작에 악영향을 미칠 가능성이 있습니다. 쓰레.. 더보기
Threading in C# 1.쓰레드의 개념(1) 본 글은 Threading in C# - Getting Started 의 내용을 번역한 내용입니다. 쓰레드의 개념C#에서는 멀티 쓰레드에 의한 병렬 처리가 지원되고 있습니다. 1개의 쓰레드는 다른 곳에서 독립된 실행 경로에 프로그램이 실행되어, 다른 쓰레드와 동시에 실행이 가능합니다. C#의 클라이언트 프로그램 (Console, Windows Form, WPF)에서는 OS 및 CLR에 의해 어플리케이션이 실행될 때 1개의 쓰레드가 만들어 집니다. 이 최초에 만들어진 쓰레드를 메인 쓰레드(Main Thread)라고 부릅니다. 또한 메인 쓰레드에서 쓰레드를 작성하는 것으로 멀티 쓰레드 어플리케이션을 만다는 것이 가능합니다. 아래는 쓰레드를 복수로 기동하는 샘플 코드입니다. class ThreadTest { .. 더보기