gpt4 book ai didi

c++ - Boost::this_thread::get_id() 无字符串操作

转载 作者:太空狗 更新时间:2023-10-29 23:41:48 25 4
gpt4 key购买 nike

我处于需要将 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();

根本不涉及字符串。为什么要尝试将其转换为 char *

如果您的线程需要如此频繁地获取它们的 ID 以致于造成瓶颈,那么您很可能做错了一些可怕的事情。为什么您如此需要一个线程的 ID?

更新:好的,所以您需要一个具有特定语义的线程 ID。您需要分配 具有所需语义的线程 ID。 (不能保证线程已有的任何 ID 都可以用在文件名中。)在伪代码中:

  1. 调用 get_id。
  2. 在 map 中查找您检索到的 ID。
  3. 如果您找到此 ID 的条目,返回它的值,您就完成了。
  4. 该线程没有可用于文件名的 ID。所以给它分配一个。存储你从 get_id 获得的 ID 和你刚刚在 map 中分配的 ID。这将确保您下次尝试获取此线程的条目时,您将获得相同的条目。

或者,您的平台可能具有提供所需语义的功能。例如Linux有gettid,NT有GetCurrentThreadId

关于c++ - Boost::this_thread::get_id() 无字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com