が、答えを探しているユーザーのために、ブーストは、単純に次のメソッドを呼び出して、あなたが言ったようにスレッドIDを相談することができます:
boost::this_thread::get_id()
この方法は、ブーストから内部IDのタイプを返すことあなたが望むように数値ではありません。しかし、この数値を、例えば、IDが16進表現であることを考慮して、符号なしlongに簡単に変換できます。この小さな機能はデ仕事を行います。
4491075584
4491612160
4492148736
4492685312
4493221888
4493758464
4494295040
4494831616
4495368192
4495904768
boost_threadとboost_systemとのリンクを忘れないでください:
#include <boost/lexical_cast.hpp>
#include <boost/thread.hpp>
unsigned long getThreadId(){
std::string threadId = boost::lexical_cast<std::string>(boost::this_thread::get_id());
unsigned long threadNumber = 0;
sscanf(threadId.c_str(), "%lx", &threadNumber);
return threadNumber;
}
void drawThreadId(){
std::cout << getThreadId() << std::endl;
boost::this_thread::sleep(boost::posix_time::milliseconds(500));
}
int main() {
for(int i=0; i<10; i++){
boost::thread thread = boost::thread(drawThreadId);
}
return 0;
}
これは、このようなものを返します。
希望すると便利です。
関数へのパラメータとして、出力ストリーム演算子で使用するboost :: thread :: idを渡しますか?ストリームやストリーム演算子を使用せずに値を使用できるようにするには、何を除いて近いと思いますか? – AJG85
boost :: this_thread :: get_id()をスレッドワーカー関数内から使用すると、実際にsprintf_sスタイルの書式設定が必要なくなりました。 – AJG85