728x90
반응형

mutex 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++) { // 웹사이트를 다운로드 하는데 걸리는 시간이라 ..

Readers and Writers Problem, 동기화 [운영체제]

여기에서는 읽는 프로세스, Reader 쓰는 프로세스, Writer 2가지가 있다. 여기서 공유 데이터는 DB와 readcount가 있다. Write할 때는 db에 다른 프로세스가 접근하면 안되고 Read는 동시에 여럿이 db에 접근이 가능하다. 처음에 이해하기로는 Write에는 mutex를 보장해야해서 lock을 걸어야 하고 Read에는 lock이 필요 없다는 말이다. 과연 그럴까?? 그렇게 이해하면 안되고 db에 lock은 read가 일어날 땐 db에 lock을 걸어서 write가 못하게하는 용도고 write가 일어날 땐 db에 lock을 걸어서 read를 못하게하는 용도다. 읽기와 쓰기가 같이되면 안되기에 하는 db lock이라는 것이고 mutex는readcount에 접근할 때 올바른 readcou..

728x90
반응형