【发布时间】:2018-12-10 07:30:52
【问题描述】:
我想知道在使用每个线程仅从该套接字发送和接收的 Python 套接字时是否真的需要使用例如 threading.Lock。打开和关闭始终由父级处理。
在寻找答案时,大多数人只是简单地说套接字不是线程安全的,需要使用一些东西来序列化它们。但没有人真正解释为什么需要这样做。
其他人说send 和recv 在操作系统级别上是线程安全的,因此可以在没有序列化的情况下并行使用(here)。我不知道我在这里是否正确,但我认为 Python 使用 POSIX 套接字的 C 实现,对吗? (Windows 实现的套接字呢?)
如果 send 和 recv 在没有锁的情况下被调用是不正确的,那么为什么会这样呢?线程上是否有可能接收到另一个请求的数据?
【问题讨论】:
标签: python-3.x multithreading sockets locking