use*_*305 2 c++ unix multithreading boost
我需要将boost :: thread :: id转换为变量,但这个变量不是字符串,也不允许字符串操作.那可能吗?
也许是这样的
char *tid = (casting something) boost::this_thread::get_id()
这是unix系统上的c ++.避免使用字符串操作的原因是因为它降低了整个应用程序的速度.谢谢你.
无论如何,你的问题似乎完全基于一种误解.如果要获取boost::thread::id变量,则变量应为类型boost::thread::id.像这样:
boost::thread::id MyVariable = boost::thread::get_id();
Run Code Online (Sandbox Code Playgroud)
根本不涉及任何字符串.你为什么要把它投到一个char *?
如果你的线程需要经常获取他们的ID以至于造成了瓶颈,那么你可能会做出一些可怕的错误.为什么你需要这么多线程的ID?
更新:好的,所以你需要一个具有特定语义的线程ID.您需要分配具有所需语义的线程ID.(无法保证线程已有的ID在文件名中可用.)在伪代码中:
或者,您的平台可能具有提供所需语义的功能.例如,Linux有gettid和NT有GetCurrentThreadId.