POSIX スレッドを使用してコードを確認し、POSIX スレッドの古い LinuxThreads 実装を使用して Linux プラットフォームで実行しています (クロスコンパイルされたコード、違いがある場合は MIPS/uClibc をターゲットにします)。NPTL 実装の答えに違いがある場合は、完全を期すためにそれも知りたいです。pthread_t
質問は、C ライブラリ ヘッダー ファイルから、uClibc と glibc の両方で定義されていることがわかるタイプに関するものですunsigned long int
(実際には組み込み GNU C ライブラリ – 参照として利用できるのは Ubuntu だけです)。
質問に... タイプの変数はpthread_t
、プロパティの所有者を格納するために使用されます。私を悩ませているのは、0
どのスレッドもそのプロパティを所有していないことを示す の代入が表示されることです。pthread_t
型は不透明であるとPOSIX 標準が述べていることを知っているので、気になります。たとえば、プロパティがスレッドによって所有されているかどうかを判断するには、ブール値フラグを使用する方がよいことはわかっています。私は、長期的には POSIX 標準を尊重するようにコードを修正する必要があるという意見を持っています (他の理由ではなく、将来の世代がコードの堅牢性について熟考するのを防ぐため)。次の質問への答え:の値は決して設定できないと仮定できますか?pthread_t
0
pthread_create(3)
このプラットフォームでpthread_t
(私が知る限り、値を取得する唯一の方法です)、その後: value への代入は、このプラットフォームで0
未使用のプロパティをマークする堅牢な方法ですか?