【问题标题】:Thread Synchronization - Critical Section or Mutex?线程同步 - 关键部分或互斥锁?
【发布时间】:2013-01-16 21:44:10
【问题描述】:

如果我需要同步两个线程,这两个线程都在特定套接字上使用 send() 调用函数,那么扭曲 send() 函数的关键部分或研究使用互斥锁会更有用吗? (因为套接字是一个内核对象)

【问题讨论】:

    标签: c++ sockets networking synchronization mutex


    【解决方案1】:

    假设 Windows 平台(这就是我们在临界区和互斥体之间进行选择的地方)。

    Mutex(CreateMutex)要慢得多:锁定和解锁始终是系统调用,即使没有争用。不过,send 的成本可能足以让这种差异不明显。

    正如另一个答案所指出的,互斥锁可以在进程之间共享(如果命名/重新打开或继承),并且关键部分是进程本地的。

    【讨论】:

      【解决方案2】:

      我假设这是关于 Windows 的(不记得在其他地方看到过关键部分)。

      如果所有锁定都在一个进程中,那么使用哪个同步对象并不重要。如果你想跨进程边界锁定,那么你应该使用互斥锁,因为临界区只能在单个进程中工作,但命名互斥锁可以在多个进程之间共享。

      【讨论】:

        【解决方案3】:

        我认为,互斥锁应该工作得更快。

        【讨论】:

          猜你喜欢
          • 2014-05-02
          • 1970-01-01
          • 2021-06-04
          • 2016-06-21
          • 1970-01-01
          • 2011-06-10
          • 2013-01-31
          • 2020-12-07
          • 1970-01-01
          相关资源
          最近更新 更多