2013-10-08 26 views

cevap

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

Aslında std::thread::id (this bakınız) ostream kullanılarak yazdırılabilir olup.

Yani bunu yapabilirsiniz:

#include <sstream> 

std::ostringstream ss; 

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

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

std::thread::id bir std::string için "dönüştürme" Sadece sana biraz eşsiz ama aksi yararsız metin verir. Alternatif olarak, insanlar tarafından kolay tanımlama için yararlı bir küçük tamsayı numarasına "dönüştürebilirsiniz":

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