【发布时间】:2013-01-15 15:57:36
【问题描述】:
好吧,基本上我有 3 个线程。
它们中的每一个都使用一个函数,该函数内部使用特定套接字上的 send()(我们称之为 S)。 这是一个小设计:
我将如何同步 S 套接字,以便在队列中一个接一个地调用 send(),而不是同时访问所有线程?
【问题讨论】:
标签: c++ sockets networking winsock packet
好吧,基本上我有 3 个线程。
它们中的每一个都使用一个函数,该函数内部使用特定套接字上的 send()(我们称之为 S)。 这是一个小设计:
我将如何同步 S 套接字,以便在队列中一个接一个地调用 send(),而不是同时访问所有线程?
【问题讨论】:
标签: c++ sockets networking winsock packet
首先,为什么没有要发送的实际数据队列,并有一个专用的 IO 线程从中弹出项目并写入套接字?
然后,如果您使用常规阻塞套接字语义,您可以同时从所有三个线程写入同一个套接字 - 内核将在系统调用级别提供所需的锁定。
【讨论】:
deque、一个互斥锁和一个条件变量。