【问题标题】:Synchronizing socket send()同步套接字发送()
【发布时间】:2013-01-15 15:57:36
【问题描述】:

好吧,基本上我有 3 个线程。

它们中的每一个都使用一个函数,该函数内部使用特定套接字上的 send()(我们称之为 S)。 这是一个小设计:

我将如何同步 S 套接字,以便在队列中一个接一个地调用 send(),而不是同时访问所有线程?

【问题讨论】:

    标签: c++ sockets networking winsock packet


    【解决方案1】:

    首先,为什么没有要发送的实际数据队列,并有一个专用的 IO 线程从中弹出项目并写入套接字?

    然后,如果您使用常规阻塞套接字语义,您可以同时从所有三个线程写入同一个套接字 - 内核将在系统调用级别提供所需的锁定。

    【讨论】:

    • 如果您不介意我询问,我将使用什么 STL 模板来设计这种类型的队列。
    • 只需包装一个deque、一个互斥锁和一个条件变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2021-07-08
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多