이 코드가 있습니다. 여기에 전역 변수 c의 사용을 동기화해야합니까? 스트림이 동시에 작업을 시작하고 하나의 스레드가 다른 스레드의 결과를 덮어 쓰고 결국 2 또는 7 중 하나를 얻는 것이 가능합니까?전역 변수의 사용을 동기화해야합니다
#include <iostream>
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
int c = 0;
void* write(void*)
{
c += 2;
}
void* read(void*)
{
c += 7;
}
int main()
{
pthread_t t1;
pthread_t t2;
std::cout << "first C = " << c << std::endl;
int r1 = pthread_create(&t1, 0, &write, 0);
int r2 = pthread_create(&t2, 0, &read, 0);
pthread_join(t1, 0);
pthread_join(t2, 0);
std::cout << " C = " << c << std::endl;
return 0;
}
뮤텍스 및 잠금에 익숙합니까? 편집 : 이것은 고전적인 독자 - 작가 문제입니다 : http://en.wikipedia.org/wiki/Readers%E2%80%93writers_problem – AndyG
예, 나는 mutexes에 대해 잘 알고 있으며, URL에 감사드립니다. –