반응형

멀티쓰레드 3

Part 4-2-12. 멀티쓰레드 프로그래밍 : 이벤트(AutoResetEvent, ManualResetEvent), 뮤텍스

멀티 쓰레드 이벤트(AutoResetEvent) 오늘의 주제는 이벤트를 이용한 락 구현이다. 이전 시간에서 직원을 새로 고용해서 직원에게 부탁하는 방법이 이에 해당한다. 그렇지만 사실 해당 직원은 식당 직원이 아닌 커널 레벨에 있는 식당 관리자에 해당하는 것이다 😲.. 이런 식으로 커널 레벨로 옮겨서 실행을 할 때에는 어마어마하게 느리다는 단점이 있다. 대신 본인 입장에서는 시간을 낭비하는 것이 아니므로 행동을 이어가는 장점이 있다. C#에서는 이벤트를 구현할 때에는 두 가지 방법이 있다. 1. Auto Reset Event 이는 톨케이트를 생각하면 된다. 톨게이트를 보면 차가 한대한대씩 지나가고, 지나갈 때마다 톨게이트가 닫혀 대기해야 하는 상황이 발생하는데 이것이 바로 Auto Reset Event의..

Part 4-2-3. 멀티쓰레드 프로그래밍 : 컴파일러 최적화

멀티 쓰레드 컴파일러 최적화 using System; using System.Threading; namespace ServerCore { class Program { static bool _stop = false; static void ThreadMain() { Console.WriteLine("쓰레드 시작!"); while (_stop == false) { // 누군가 stop 신호를 해주기를 기다린다! } Console.WriteLine("쓰레드 종료!"); } static void Main(string[] args) { // 메인에서 쓰레드를 생성하고 실행한다 Task t = new Task(ThreadMain); t.Start(); // 멈춘다 _stop = true; Console.WriteLi..

Part 4-2-1. 멀티쓰레드 프로그래밍 : 멀티쓰레드 개론

멀티 쓰레드 서버는 멀티쓰레드를 활용한다. 여태까지 자료구조와 알고리즘은 기초 지식이 없어도 충분히 이해하고 활용할 수 있지만, 멀티쓰레드부터는 원할한 이해를 위해선 컴퓨터 구조 원리와 운영체제의 기본 지식이 필요하다. 따라서 오늘은 당장 코드로 이런, 저런 작업을 하는 것이 아닌 멀티쓰레드 개론에 대해서 얘기한다. 서버를 운영하는 것은 식당을 운영하는 것과 같다. 우리가 크게 한식, 일식, 그리고 이보다 규모가 조금 큰 패밀리 레스토랑 총 3가지의 식당을 운영한다고 가정해보자. 로봇 직원은 혼자서 아무것도 하지 못하는 상황이며, 식당 관리자인 우리는 영혼을 각 식당의 로봇에게 부여한다고 한다. 이 때 영혼도 1개라고 가정한다. 그렇다면 영혼이 1개인데 각 식당의 로봇을 어떻게 관리하고 일을 시킬수 있을..

반응형