В любом случае, ваш вопрос, кажется, полностью основан на неправильном представлении.Если вы хотите получить boost::thread::id
в переменную, переменная должна иметь тип boost::thread::id
.Вот так:
boost::thread::id MyVariable = boost::thread::get_id();
Строки не задействованы вообще.Почему вы пытаетесь привести его к char *
?
Если вашим потокам нужно получать свои идентификаторы так часто, что это создает узкое место, вы, вероятно, делаете что-то ужасно неправильное.Зачем вам так нужен идентификатор потока?
Обновление : Хорошо, вам нужен идентификатор потока с определенной семантикой.Вам необходимо назначить идентификаторов потоков, которые имеют необходимую семантику.(Нет никакой гарантии, что любой идентификатор, который уже есть в потоках, может использоваться в имени файла.) В псевдокоде:
- Вызовите get_id.
- Найдите идентификатор, который вы получиликарта.
- Если вы нашли запись для этого идентификатора, верните ее значение, все готово.
- В этой теме нет идентификатора, который можно использовать в имени файла.Так что назначьте это одно.Сохраните пару идентификатора, который вы получили из get_id, и идентификатор, который вы только что присвоили на карте.Это будет гарантировать, что в следующий раз, когда вы попытаетесь получить запись для этого потока, вы получите ту же самую.
В качестве альтернативы, ваша платформа может иметь функцию, обеспечивающую необходимую семантику.Например, в Linux gettid
, а в NT GetCurrentThreadId
.