c++ - 我应该如何将线程内部的值复制回主线程?

标签 c++ multithreading unreal-engine4

在类 (A) 中,我有一个函数可以在线程中将数据流式传输到我的应用程序中。 数据被复制到另一个类(B)的头文件中的自定义结构(StructStore):

.h

class Data:
public:
    StructStore DataStore;

.cpp

    Data dd;

    StructStore DataIn;  // data streams in

   dd.DataStore = DataIn;

当我添加断点并检查此处(线程内)的值时,它们如我所料,在 DataStore 和 DataIn 中均如此。

我需要的是从线程外部在另一个类 (C) 中调用这些值。我正在尝试:

.cpp

   StructStore Result;
    Data d;

    Result = d.DataStore;

当我检查此处的值时,它们始终为零。我在这里做错了什么?如何安全地将这些值复制到线程外?

最佳答案

一种简单且安全(但不是 100% 最有效)的方法是使用 pipe .只需让您的主线程从中读取(如果只有一个工作线程则阻塞,或者如果要等待多个管道则使用 select() )。然后让你的工作线程 write() 结构到它。如果每次写入的大小小于 PIPE_BUF 字节,您甚至可以让多个线程同时写入管道而无需锁定。

关于c++ - 我应该如何将线程内部的值复制回主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37530534/

相关文章:

java - regexec 未返回所有预期的匹配项

c++ - QtDBUS:通过 DBUS 发送枚举

Java渲染循环和逻辑循环

multithreading - 在特定线程上执行(部分)静态函数

c++ - GetOwner() 导致虚幻编辑器崩溃

c++ - 为什么内联用户提供的构造函数 odr 使用基类构造函数?

c++ - 更改 Windows DLL 加载顺序? (加载顺序,不是搜索顺序)

全局配置设置的C#线程安全

c++ - 为什么我没有收到 OnClicked 函数的响应?

c++ - 无法使用 Visual Studio 2019.7.2 编译虚幻引擎 4.25