피터슨 알고리즘쪽질문드립니다 .
250
작성자 없음
작성한 질문수 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





