2013-10-08 11 views

Odpowiedz

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

Właściwie std::thread::id jest druku użyciu ostream (patrz this).

Więc można to zrobić:

#include <sstream> 

std::ostringstream ss; 

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

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

"konwersja" std::thread::id do std::string tylko daje pewne unikalne ale inaczej bezużyteczny tekst. Możesz też "przekonwertować" go na małą liczbę całkowitą przydatną do łatwej identyfikacji przez ludzi:

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]; 
} 
Powiązane problemy