4

デッドロック回復のために pthread の堅牢なミューテックスを使用する (Linux で実行するための) コードをいくつか作成しました。

Centos 5 では、mutex 属性名は PTHREAD_MUTEX_ROBUST_NP です。ただし、Fedora 16 では、_NP サフィックスが削除されました。

Posix 標準にはサフィックスが含まれていません。接尾辞の意味、削除された時期、および機能のいずれかの命名を使用するコードをコンパイルする適切な方法は何ですか。

編集: したがって、後の pthreads ではサフィックスが削除されたようです。ただし、_GNU_SOURCE を定義すると、「_np」バージョンが再定義されるため、ソースはどちらでもコンパイルできます。

4

1 に答える 1

3

cnicutar によって既に提案されているように、_NP は非移植性を表し、標準にない (またはまだない) 機能を追加したい実装によって追加されます。標準では、少なくとも 1 つの主要な実装で実装され、有用であり、既存の標準関数を使用して簡単に達成できないことが証明されている関数のみを含めることを検討します。

Fedora は通常、RHEL (または CentOS) よりも新しいバージョンのライブラリを使用しており、堅牢なミューテックスと関連する API が標準に受け入れられているため、おそらく _np を削除しています。

于 2012-08-29T01:57:12.933 に答える