如果我有一台服务器进行计算并同时发送/接收来自客户端的数据包怎么办?
我的意思是,如果我正在编写一个 http-server,那么答案中的示例就足够了,因为发送的所有数据都是接收到的数据的函数。
假设我的程序计算值并需要根据客户的需要更新客户端(有些人可能希望更新频率为 1 赫兹,而另一个为 10 赫兹等)。
这种结构对我很有帮助:
while(1){
pollNetworking(); //<- my function
value1 += 5; value2 = random();
}
在我的 pollNetworking 函数中,我正在考虑调用诸如 acceptor.accept(*socket,10); 之类的东西。其中 10 是以毫秒为单位的超时,但由于没有超时参数,我不知道如何构造它。
可扩展性不是最大的问题,我可以为每个套接字生成一个线程,一个额外的线程用于接受,另一个线程用于计算吗?这很容易实现吗?因为我希望它尽可能稳定,然后是速度,然后是可扩展性。当谈到多线程时,我不相信自己可以干净地编码和调试它。
编辑:我了解到我可以使用 io_service::poll,它只调度就绪事件而不阻塞。所以它是一个 0 超时的同步函数,完全符合我的需要。