2013-10-08 12 views

risposta

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

realtà std::thread::id è stampabile utilizzando ostream (vedi this).

Così si può fare questo:

#include <sstream> 

std::ostringstream ss; 

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

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

"conversione" std::thread::id ad un std::string appena ti dà un testo unico, ma altrimenti inutile. In alternativa, puoi "convertirlo" in un numero intero piccolo utile per una facile identificazione da parte degli umani:

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]; 
}