我有一个函数可以在类(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;
当我检查这里的值时,它们总是为零。我在这做错了什么?如何安全地将这些值复制到线程外部?
答案 0 :(得分:1)
一种简单而安全(但不是100%最有效)的方法是使用pipe。只需从中读取主线程(如果只有一个工作线程则阻塞,或者如果有多个管道等待,则使用select()
)。然后让你的工作线程write()
结构。如果每次写入的大小小于PIPE_BUF
个字节,您甚至可以同时多个线程写入管道而不锁定。