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 を処理する必要がないようにします。