c – 将数据结构传递给不同的线程

前端之家收集整理的这篇文章主要介绍了c – 将数据结构传递给不同的线程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个将产生多个线程的应用程序.但是,我觉得线程访问数据不一定存在问题.

这是线程应用程序的结构(抱歉粗略):

MainThread
                  /          \
                 /            \
                /              \
        Thread A               Thread B
       /        \              /       \
      /          \            /         \
     /            \          /           \
Thread A_1     Thread A_2   Thread B_1    Thread B_2

在每个字母线程(可能很多)下,只有两个线程,它们按顺序触发.我遇到的问题是我不完全确定如何将数据结构传递到这些线程中.

因此,数据结构在MainThread中创建,将在特定于该线程的字母线程(线程A等)中进行修改,然后将该数据结构中的成员变量发送到Letter_Numbered线程.

目前,字母线程类有一个成员变量,当构造类时,来自mainthread的数据结构通过引用传入,调用复制构造函数,以便字母线程拥有它自己的副本.

lettered_numbered线程只是从字母线程中的数据结构中获取一个字符串变量.我的问题是,这是可以接受的吗?有没有更好的方法来确保每个字母线程获得自己的数据结构?

对不起有些不好的解释,请留下评论,我会尽力澄清.

编辑:
所以我的字母线程构造函数应该采用数据结构的VALUE,而不是引用?

解决方法

我希望每个线程都创建自己的数据结构副本,例如您在构造函数中传递结构,然后显式创建本地副本.然后,您可以保证线程具有不同的副本. (你说它是通过引用传递的,并且这会调用复制构造函数.我认为你的意思是通过值传递?我觉得最好明确地复制一份,毫无疑问地让你的意图明确.否则有人可能会在以后过来并通过值更改您的传递以通过引用传递为“智能优化”.)

编辑:删除了关于字符串的评论.出于某种原因,我假设是.NET.

要确保字符串是私有的,请按照相同的步骤创建字符串的副本,然后可以自由修改.

猜你在找的C&C++相关文章