Debian 安定版を使用しています。C++ でマルチスレッド アプリケーションをコーディングし、g++
コンパイラを使用-lpthread argument
してコンパイルしていました。
しかし、関数は機能しpthread_getthreadid_np()
ません:
エラー: 'pthread_getthreadid_np' はこのスコープで宣言されていません
このエラーの原因は何ですか?
Debian 安定版を使用しています。C++ でマルチスレッド アプリケーションをコーディングし、g++
コンパイラを使用-lpthread argument
してコンパイルしていました。
しかし、関数は機能しpthread_getthreadid_np()
ません:
エラー: 'pthread_getthreadid_np' はこのスコープで宣言されていません
このエラーの原因は何ですか?
_np
は「移植性がない」(または「Posix でない」) ことを意味し、すべてのプラットフォームで利用できるわけではないことを意味します。この関数は、呼び出しスレッドのプラットフォーム固有の整数 ID を取得するために、BSD に固有のようです。Linux には存在しません。
pthread_t
使用目的に応じて、ポータブルpthread_self
関数 (Linux では整数型) によって返されるハンドル、または Linux 固有のgettid
システム コールによって返される数値スレッド IDを使用できる場合と使用できない場合があります。または、何をしているのかを再考して、スレッド ID を処理する必要がないようにします。