在C ++中同时运行套接字和其他计算

时间:2019-02-08 11:12:36

标签: multithreading sockets parallel-processing io network-programming

很抱歉,这个问题太容易解决了。 我想在C ++中实现以下方案。 存在一组要评估的功能,例如f_1f_2等。 在评估f_i时,程序正在与其他主机进行收发。 f_i完成后,会有一些返回值。 因此,程序应立即移至套接字部分以发送值或从另一台机器接收消息。 但是同时,应该开始计算尚未评估的f_j

我知道多线程可以解决此问题。 但是,一个线程如何知道某个特定线程中的计算是否完成?

如果用文件I / O替换套接字,我想我们可以做同样的事情。

如果您建议我一种解决此问题的方法或对此做一些参考,将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可能应该至少有一个带有事件循环的I / O线程来处理套接字。

此I / O线程可以将计算分派到线程池。一旦计算完成,您应该让I / O线程知道它应该发送计算结果。有几种方法可以做到这一点,一种简单的方法是让计算线程在堆上分配计算结果,并将指向它的指针写入管道。 I / O线程事件循环会注意到在管道的读取端中存在可用数据,读取了指向结果的指针并开始以非阻塞方式发送结果。