我在C ++(Windows,Visual Studio 2010)中有两个类,每个类都运行不同的线程,我想以简单的方式在它们之间发送消息。想法是主要调用class2上的read,等待class2获取数据,然后main类接收它并继续 - 类似于套接字,但在同一程序的两个类/线程之间。可以这样做吗?
示例:
class MyClass(){
...
void run(){...}; //runs a thread here that collects data from a network socket
};
int main(){
MyClass *mc = new MyClass();
mc->run();
...
mc->receiveData(); //returns a value AFTER the class gets a hold of it, and blocks in the meantime...
}
有没有简单的方法可以做到这一点?有点像创建一个套接字,并从中读取它,它将不会返回,直到它从网络接收数据包/数据,除了我想要一个类在本地系统上执行此操作。谢谢!
答案 0 :(得分:1)
创建线程并在线程上调用join()。 (谷歌那个)。线程连接将允许您生成一个线程进行处理,并指示一旦主要到达连接,它应该等待它加入的线程完成。您可以在联接语句返回时从线程返回一个值,以便main可以在需要时知道结果。
答案 1 :(得分:0)
听起来你想要一个线程安全的队列来放你的消息。
查看Microsoft Parallel Patterns Library中的“并行容器和对象”。该页面有一个显示concurrent_vector
使用情况的示例。