使用 async_write 同时写入不同的套接字

Writing to different sockets in the same time using async_write

本文关键字:套接字 async write 使用      更新时间:2023-10-16

我想写服务器(TCP/IP),我有一些问题,因为我不确定我是否考虑正确。

我需要一个只有一个线程的服务器。我需要向某些客户端读取和写入数据。我想使用boost::asioasync_acceptasync_writeasync_read等。

如果同时为不同的客户端调用async_write可以吗?如果我的程序为一个客户端调用async_write,而在调用处理程序之前,它为另一个客户端调用async_write,该怎么办?

关于async_read的相同问题.

这不是问题吗?

是否保证(在这种情况下)第一次调用async_write的回调将在第二个async_write的回调之前调用?

如果某些回调(处理程序)需要很长时间怎么办?其他回调只是在堆栈中等待,直到这个回调完成?如果这个回调永远不会结束,另一个回调将永远不会被执行?我说的对吗?

重叠异步

读取和写入对不同套接字的调用没有问题。我建议您为每个连接提供自己的链,以便在您决定添加TLS支持或使用多个线程时将来不会中断。可以按任何顺序调用完成处理程序,具体取决于操作实际完成的顺序。当然,不能在同一连接上同时执行两个异步读取操作或两个异步写入操作。

  • 不,这不是问题。
  • 不,这是没有保证的。
  • 不,回调不应该互相等待。
  • ,你说得不对。

每个套接字的套接字 I/O 独立进行。