2010-11-18 2 views
1

플로리다 주립대 학교에서 pthread 표준을 구현 한 것이 재귀 뮤텍스를 처리 할 수 ​​있는지 궁금합니다. 불행히도 FSU 구현에 관한 문서는 다소 형편 없으며 뮤텍스를 재귀 적으로 선언 할 가능성을 언급하거나 언급하지 않습니다. 합니다 (와 동일한 코드를 컴파일하려고FSU Pthread 구현을 사용하는 재귀 뮤텍스

test.c:25: error: `pthread_mutex_attr' undeclared (first use in this function) 
test.c:25: error: (Each undeclared identifier is reported only once 
test.c:25: error: for each function it appears in.) 
test.c:25: error: parse error before "mutex_attr" 
test.c:27: error: `mutex_attr' undeclared (first use in this function) 
test.c:28: error: `PTHREAD_MUTEX_RECURSIVE' undeclared (first use in this function) 

: 오류의 목록을

pthread_mutex_attr mutex_attr; 
pthread_mutexattr_init (&mutex_attr); 
pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE); 
pthread_mutex_init(&mutex, NULL); 

을하고 FSU의의 pthreads 라이브러리를 사용하여 컴파일, 내가 가진 다음과 같이 뮤텍스를 선언하려고

비 -FSU) pthread 구현 내 컴퓨터에 작동합니다.

사소한 일을 피하기 위해, 기본적으로 POSIX 뮤텍스는 재귀 적이 아님을 미리 알려드립니다.

FSU 구현에서 재귀 뮤텍스를 사용할 방법이 없다고 결론 내릴 것인가? 아니면이를 달성 할 수있는 또 다른 방법이 있을까요? 즉, 뮤텍스를 재귀 적으로 선언하는 다른 방법이 있습니까?

+1

유형은'pthread_mutex_attr_t'입니다. _t에주의하십시오. –

+0

벤, 당신 말이 맞아요, 내가 쓴 코드는 컴파일러의 출력을 얻으려는 시도뿐입니다. 원래 코드가 맞았습니다 :) –

답변

1

아니요, FSU pthreads 구현은 재귀 mutex를 지원하지 않습니다. 실제로 latest release에는 뮤텍스 유형에 대한 개념이 없습니다. PTHREAD_MUTEX_* 뮤텍스 형식 이름이 없으면서도 뮤텍스 형식을 조작하는 데 사용되는 pthread_mutexattr_settype()pthread_mutexattr_gettype() 함수를 생략했습니다.

+0

제레미 덕분에, 제 생각으로는, 제가 생각하기에 흐름을 수정해야한다고 생각합니다. 자물쇠 중첩을 ​​피하기 위해 내 응용 프로그램. –

관련 문제