C++ 11コンパイラを使用してCodeBlocksにstd::this_thread::get_id()
を使用すると、スレッド番号は2から始まります。コードを実行するたびに、スレッド2-6を代わりに印刷します。 0 - 4となった。なぜですか?C++ std :: this_thread :: get_id()coutに渡す
バックグラウンドで実行されている他のC++アプリケーションがスレッドID 1と2を使用している可能性はありますか?何の魔術はこれですか?
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
std::mutex m;
class TClass
{
public:
void run()
{
m.lock();
cout << "Hello, I'm thread " << std::this_thread::get_id() << endl;
m.unlock();
}
};
int main()
{
TClass tc;
std::thread t[5];
for (int i=0; i<5; i++)
{
t[i] = std::thread(&TClass::run, &tc);
}
for (int i=0; i<5; i++)
{
t[i].join();
}
cout << "All threads terminated." << endl;
}
あなたのメインは最初のスレッドで実行されます – user463035818