728x90
반응형

뮤텍스 3

C++문법 / 생산자 소비자 문제, Producer and Consumer Problem

Mutex로 deadlock을 걸리지 않게 하는 법을 배웠으니 왜 deadlock인 상황이 발생하고 왜 mutex를 걸어줘야하고 왜 thread를 이용해서 작업을 하는지 몸소 느껴보자 먼저 코드를 볼까? #include #include #include #include #include #include #include using namespace std; using namespace chrono; // 생산자 함수 //string을 담는 큐, 뮤텍스 객체, index(스레드 번호)를 매개변수로받음 void producer(queue* downloaded_pages, mutex* m, int index) { for (int i = 0; i < 5; i++) { // 웹사이트를 다운로드 하는데 걸리는 시간이라 ..

뮤텍스,Mutex (Mutual Exclusion) 쓰임과 예시

docs.microsoft.com/en-us/windows/win32/sync/using-mutex-objects 위의 링크에 예시가 있다. 뮤텍스에 대해서 더 알아보자 MUTual EXclusion 의 줄임말이다. 하나의 스레드는 한 번에 오직 하나만의 뮤텍스를 가질 수 있다. 마치 이건 하나의 스레드만이 임계구역(critical section)에 들어가는 것과 비슷하다. 다시 말해서 서로 다른 프로세스에 있더라도 스레드 간에 상호 배제를 가능하게 해주는Kernel object이다. --임계영역에 대해서는 이 글에서 잘 설명했다. 위 글로 아래를 이해하면 되고 안되면 다시 맨 밑의 예를 보면서 이해하면 된다. ** 참고 예시를 comment와 함께 보는 것도 괜찮을듯

728x90
반응형