강의 너무너무 잘 듣고있습니다 감사합니다
저 강의를 듣다가 코드를 보는데
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;
}