0

我目前正在探索 boost::thread/threadpool 和线程本地存储,基本上是为了实现一个数据报的副本到线程池的作业队列。

当前设置使用 1:1 设置使用自定义通知队列将松散耦合的一个数据报从一个线程复制到另一个线程。该队列确实支持多个阅读器线程,但每个阅读器都会使用该消息。

我目前正在探索通过 thread_local_storage 变体扩展队列,以将每个数据报复制到池中每个线程的作业队列中。

但我想知道 boost 是否已经支持这种操作,尽管我找不到任何东西。开箱即用的 boost 是否支持将单个副本复制到池中每个线程的本地存储?

非常感谢!

4

1 回答 1

0

为什么要为每个线程提供一份数据副本?我能想到的唯一原因是,因为线程正在对其他线程不可见的数据进行更改。如果没有进行任何更改,只需将数据的引用(也称为指针)传递给每个线程。如果必须进行更改,也将引用传递给每个线程并让线程复制数据。如果需要释放数据,当不再使用时,使用共享指针。

线程本地存储主要用于模拟旧式静态变量。

于 2013-04-10T09:35:46.427 回答