【问题标题】:how to ensure thread safe when using IOCP in multithread in windows?在windows的多线程中使用IOCP时如何确保线程安全?
【发布时间】:2020-10-27 06:36:00
【问题描述】:

如果我 CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, NULL, 4),那么当调用 PostQueuedCompletionStatus() 时,运行 GetQueuedCompletionStatus() 的 4 个线程可能会从 GetQueuedCompletionStatus() 返回。所以如果我想通过 PostQueuedCompletionStatus() 多次发送一些数据,那么 4 个线程将有机会发送数据。那么问题是,多线程中将使用相同的套接字。它会是线程安全的吗?作为同一个socket,我可以一直指定到同一个线程吗?

【问题讨论】:

    标签: iocp


    【解决方案1】:

    在我看来,而不是从属套接字和线程。 能够在单个套接字上只运行一次 WSARecv 或 WSASend 似乎很重要。 您将能够使用 _interlocked 函数使用标志变量来控制接收和发送请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2022-11-21
      • 1970-01-01
      • 2012-11-18
      相关资源
      最近更新 更多