我目前正在探索boost :: thread / threadpool和线程本地存储,基本上是为了一个线程池实现一个数据报副本到作业队列。
当前设置使用1:1设置使用自定义通知队列将松散耦合的一个数据报从一个线程复制到另一个线程。该队列确实支持多个读者线程,但每个读者都会消费该消息。
我目前正在探索通过thread_local_storage变体扩展队列,以将每个数据报复制到池中每个线程的作业队列。
但是我想知道尽管我没有找到任何东西,但是增强可能已经支持了这种操作。是否可以提升开箱即用支持单个副本到池中每个线程的本地存储?
非常感谢!
答案 0 :(得分:0)
为什么要将数据副本发送到每个线程?我能想到的唯一原因是,因为线程正在对其他线程不可见的数据进行更改。如果没有进行任何更改,只需将数据的引用(也称为指针)传递给每个线程。如果必须进行更改,也可以将引用传递给每个线程,并让线程复制数据。如果您需要释放数据,当它不再使用时,请使用共享指针。
线程本地存储主要用于模拟旧式静态变量。