在类 (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/