【问题标题】:Is it possible to save data in a boost thread and retrieve it?是否可以将数据保存在提升线程中并检索它?
【发布时间】:2014-05-06 13:41:33
【问题描述】:

在 Boost 线程中可以做这样的事情:

std::string key;
MyClass value;    
myThread->setData(key, value);    
MyClass retrievedValue = myThread->getData(key);

setDatagetData 只是解释我需要的想象方法。


编辑: 我得到了@SLaks 的必要答案。但是为了澄清:问题的目的不是“逐个方法”等价物,而是一个全局等价物,我们可以通过它在线程中的某个地方设置某种方式,我们可以通过它在其他地方获取它在同一个线程中的一种方式... :)

谢谢!

【问题讨论】:

  • theads 与存储键值对有什么关系?使用std::map
  • @MatteoItalia 好的,让我们使用 std::map,但我需要这个 std::map 适合每个线程。
  • 否决票是否意味着“不可能”?我应该接受“否决”作为正确答案吗?哈哈哈
  • @Jessica:否决票是因为您的问题不清楚且措辞不佳。不要要求两个命名的方法,让我们猜测它们应该是什么意思,告诉我们你想要做什么。
  • @SLaks,感谢您向我解释了我的问题中的重要内容。这有助于避免在我接下来的问题中出现这样的错误……你太棒了! :)

标签: c++ multithreading boost


【解决方案1】:

您正在寻找thread-local storage

使用boost:thread_specific_ptr

【讨论】:

  • 这正是我所需要的。我快要失去希望了……多亏了反对票……+1
【解决方案2】:

不是这样,不是。

虽然可以编写自己的线程类(根据 std::thread 或 boost::thread 或其他东西实现),它还包含值映射(除了线程实例),并且确实你在问什么。

【讨论】:

  • 这也可以是一个解决方案,+1。但是 boost::thread_specific_ptr 在我看来更简单。
猜你喜欢
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
相关资源
最近更新 更多