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

时间:2016-05-30 16:53:25

标签: 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;

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

1 个答案:

答案 0 :(得分:1)

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