inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

운영체제 공룡책 강의

12. 동기화 문제의 해결책: Chapter 6. Synchronization Tools (Part 2)

피터슨 알고리즘쪽질문드립니다 .

250

작성자 없음

작성한 질문수 0

0

강의 너무너무 잘 듣고있습니다 감사합니다 

저 강의를 듣다가 코드를 보는데 

while문에서  조건이있고 {}가 없는데 따로 실행은 없는건가요 

무조건 일단 깃발교체만 하고  sum++로 가는건가요 >?

=============================================cpp 에서는 thread가 있길래 이렇게 구현했습니다

#include <iostream>

#include <thread>

#define true 1

#define false 0

using namespace std;

int sum;

bool flag[2];

int turn;

void producer()

{

int k;

for (int i = 0; i < 10000; i++)

{

//0번이 producer, 1번이 consumer라고 생각 

/*endtry section*/

flag[0] = true;

turn = 1;

while (turn == 1 && flag[1])

;

sum++;

/*exit section*/

flag[0] = false;

}

}

void consumer()

{

int k;

for (int i = 0; i < 10000; i++)

{

//0번이 producer, 1번이 consumer라고 생각 

flag[1] = true;

turn = 0;

while (turn == 1 && flag[1])

;

sum--;

/*exit section*/

flag[1] = false;

}

}

int main()

{

sum = 0;

thread t1, t2;

t1 = thread(consumer);

t2 = thread(producer);

cout << "sum : " << sum << endl;

t1.join();

t2.join();

return 0;

}

피터슨알고리즘 운영체제 동시성

답변 1

1

주니온

안녕하세요?

while(1);

이렇게 하면 무한 루프를 돌게 되지요?

저 예제에서 while문은 내가 깃발을 획득할 수 있는 조건이 만족되지 않으면 계속 무한 루프를 돌면서 busy waiting을 하겠다는 의미입니다.

퀴즈 7번의 답에 대한 질문입니다.

0

554

1

이해하고 있는것이 맞는건지 궁금합니다 ㅠㅠ

0

821

1

타우시간

0

556

1

퀴즈1 1번 질문합니다 !

1

612

1

Page는 Text Data이외에 다른 메모리도 포함하나요?

1

373

0

IPC shared memory 코드

0

520

1

[간단한 질문 ]banker's algorithm 을 linux 에서 실제로 프로세스 관리할때 쓰이나요?

0

402

0

user mode i/o 관련 질문

0

283

1

shared memory 관련해서 질문 드립니다.

0

521

1

교수님 fork()함수에 대해 질문이 있습니다.

0

896

2

process 와 thread

0

375

1

교수님 Docker 로 실습해도 괜찮을까요?

1

867

1

Mac OS에서 Docker 이용하여 Ubuntu 20.04 환경설정 방법 공유

22

3330

2

moniter, condition variable, synchronized에 대해서 궁금한점이 있습니다..

0

675

1

왜 무료인지 이해를 못 하겠네요..

3

433

1

7.1 Classic Problems of Synchronization 질문이 있습니다

0

307

1

공룡책 8판과 10판중

0

611

1

6.3 peterson's solution 질문이 있습니다

0

222

1

08-01 연습문제 8번 질문있습니다!

0

280

0

06. 프로세스간 통신의 실제: Chapter 3. Processes (Part 4) 에 그림 3.16 3.17 실습 오류

0

263

1

안녕하세요 교수님 실습 해봤는데 LINE J가 실행이 됩니다

1

356

1

2강 실습을 위한 개발환경 구축(Windows 10 + WSL 2 + Visual Studio Code)에서 출력오류

0

344

1

아래 질문 관련하여 다시 문의드립니다

0

199

1

Thread & Concurrency (Part 2) 질문드립니다

0

186

1