2013-10-08 25 views

回答

15
auto myid = this_thread.get_id(); 
stringstream ss; 
ss << myid; 
string mystring = ss.str(); 
4

其实std::thread::id打印使用ostream(见this)。

所以,你可以这样做:

#include <sstream> 

std::ostringstream ss; 

ss << std::this_thread::get_id(); 

std::string idstr = ss.str(); 
4

“转换” std::thread::idstd::string只是给你一些独特的,但另有无用的文字。或者,您可以将其“转换”为一个小整数,便于人类识别:

std::size_t index(const std::thread::id id) 
{ 
    static std::size_t nextindex = 0; 
    static std::mutex my_mutex; 
    static std::map<std::thread::id, st::size_t> ids; 
    std::lock_guard<std::mutex> lock(my_mutex); 
    if(ids.find(id) == ids.end()) 
    ids[id] = nextindex++; 
    return ids[id]; 
} 
相关问题