공유 메모리에 뮤텍스를 만드는 간단한 작업을 시도하고 있습니다. 다음 코드는 공유 메모리 섹션을 선언하고 int*
에 연결합니다.공유 메모리에서 뮤텍스 관리하기
int *mutex;
// allocate shared memory for mutex
if ((shmid2 = shmget(IPC_PRIVATE, 4, IPC_CREAT | 0666)) < 0) {
printf("Could not allocate shared memory for mutex: %d.\n", errno);
exit(errno);
}
if ((mutex = shmat(shmid2, NULL, 0)) == (int*)-1) {
printf("Could not attach shared memory for mutex: %d\n", errno);
exit(errno);
}
// set the mutex to one
mutex[0] = 1;
이제 뮤텍스 잠금 및 잠금 해제로 둘러싸인 중요한 섹션을 정의하려고합니다. (많은 자식 프로세스 중 하나의 내부).
while (*mutex == 0) ;
mutex[0] = 0;
// critical section
...
// end critical section
mutex[0] = 1;
그러나, 나는이 기술이 작동하지 않습니다 찾는거야, 그리고 두 개의 자식 프로세스 (매우 자주 발생합니다) 많은 문제없이 동시에 임계 영역을 입력 할 수 있습니다. 그래서 pthreads를 사용하지 않고이 문제를 해결하기 위해 내가 할 수있는 일이 궁금합니다.
pthread를 사용하지 않으려는 이유가 있습니까? –