2012-12-07 1 views
0

POSIX에 따르면, 나는 정적 뮤텍스이 방법을 초기화 할 수 있습니까? 뮤텍스는 기본값이 아닌 재귀 적이며 정적 초기화에 뮤텍스 속성을 제공 할 방법이 없습니다.재귀 뮤텍스를 정적으로 초기화하는 이식성있는 방법이 있습니까?</p> <pre><code>pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; </code></pre> <p>그러나, 나는 뮤텍스는 재귀 무엇을 원하는 경우 :

+0

C 또는 C++입니까? 제안하는 언어는 사용하는 언어에 따라 다를 수 있습니다. – NPE

+0

C. C99 FWIW입니다. –

답변

0

은이 작업을 수행 할 휴대용 방법이없는 것 같다. 해결 방법은 뮤텍스를 처음 사용할 때 동적으로 초기화하는 것입니다. 초기화를 수행하는 동안 경쟁 조건을 방지하기 위해 다른 비회회 정적으로 초기화 된 뮤텍스를 사용할 수 있습니다.

0

봅니다 :

pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; 
+0

그 휴대용 있습니까? –

+0

_NP 접미사는 휴대 성이 없음을 의미합니다. 그것은 리눅스에서 작동합니다. 여기에 설명 된대로 PTHREAD_RECURSIVE_MUTEX_INITIALIZER로 시도하십시오. http://www.sourceware.org/pthreads-win32/manual/pthread_mutex_init.html 이식성을 염두에 둔 경우 –

+0

PTHREAD_RECURSIVE_MUTEX_INITIALIZER가 POSIX에 정의되어 있지 않습니다. 지원되는 운영 체제는 무엇입니까? –