代码之家  ›  专栏  ›  技术社区  ›  minjang

C套接字API是线程安全的吗?[副本]

  •  14
  • minjang  · 技术社区  · 16 年前

    我同时使用Linux和Win32套接字api。在我的程序中,多个线程共享一个套接字句柄。特别是,多线程调用 send 使用共享套接字句柄(即,同一端口)。在这种情况下,为了线程安全,我必须加锁吗?我找不到答案。我可以做个测试,但想听听你的经历。

    编辑

    这个问题可能适用于 fprintf 格式化输出 格式化输出 有一个锁来保护他们的内部数据结构。

    4 回复  |  直到 16 年前
        1
  •  10
  •   Kirill V. Lyadvinsky    16 年前

    套接字不是C++标准的一部分,因此依赖于实现。通常它们不是线程安全的,因为 send this discussion 了解更多信息。

    编辑:操作系统可以有或不能有用于保护内部结构的内部锁。这取决于执行情况。所以你不应该指望它。

        2
  •  2
  •   MajstorKvaris    12 年前

        3
  •  0
  •   weismat    16 年前

    通过套接字发送数据不是原子事务-任何非原子事务都需要锁/同步。这与平台无关。

        4
  •  0
  •   frogatto    11 年前

    sem_t* sem_data;