スレッドで実行される関数で現在のスレッドIDを取得するにはどうすればよいですか? 私はこれを試しましたが、うまくいきません。スレッドで実行される関数で現在のスレッドIDを取得するにはどうすればよいですか?
#include <thread>
#include <iostream>
using namespace std;
#define NUM_TH 4
void printhello(thread t) {
auto th_id = t.get_id();
cout << "Hello world! Thread ID, "<<th_id<< endl;
}
void main() {
thread th[NUM_TH];
for (int i = 0; i < NUM_TH; i++) {
th[i]=thread(printhello,th[i]);
th[i].join();
}
}
私はエラーがそれはとても多くの理由のためではない「仕事」をし
_うまく動作しません。少し曖昧です。それはコンパイルされますか?エラーなしで実行されますか?間違った結果を出すだけですか?もう少し具体的にする – Tas
'th [1]'を 'thread'コンストラクタに渡すと、まだ初期化されていません。つまり、 'printhello'を実行するものではなく、空白の無効な' thread'オブジェクトです。 – qxz
Stack Exchangeへようこそ。ガイドを読んだことがありますか、特に「良い質問をする方法」はありますか?問題が実際何であるかをあなたに教えてくれなかったので、あなたは下投票され、投票に終わりました。私たちがあなたを助けることができるように、質問を[編集]してください。 (あなたはあなたの[mcve]に必要なすべてのヘッダーも含めるべきです) –