2010-11-18 18 views
1

フロリダ州立大学のpthread標準の実装が、おそらく再帰的なmutexを扱うことができるかどうか疑問に思っています。 残念ながら、FSUの実装に関するドキュメントはかなり貧弱であり、ミューテックスを再帰的に宣言する可能性については言及していません。 (同じコードをコンパイルしようとするとFSU Pthreadを実装した再帰的なmutex

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_* mutex型の名前がないことに加えて、mutex型を操作するために使用されるpthread_mutexattr_settype()pthread_mutexattr_gettype()関数も省略しています。

+0

ありがとう、ジェレミー、それを考慮して、私は私は私のアプリケーションは、ロックのネストを避けるために。 –

関連する問題