如果我在一个线程中收听 websocket 而 运行 在另一个线程中收听一个函数,是否有可能错过消息
If I am listening to a websocket in one thread and running a function in another thread is it possible to miss messages
标题说明了一切。我是 运行 一个在 Linux EC2 实例上有 4 个线程的程序。其中三个正在监听不同的网络套接字,最后一个是网络抓取并在需要时调用一组其他功能。
如果 GIL 由第 4 个线程拥有(即当前 运行 它通过单核计算),websocket 消息是否可能 'missed' 由线程侦听?
我开始认为这是不可能的,但不明白为什么。我环顾四周,但收效甚微。
并非如此,即使您的应用程序完全被阻塞(比如通过调度或只是休眠),操作系统也会对传入的网络消息进行排队。如果 TCP 缓冲区开始溢出,您可能会丢失消息,我认为您的情况不太可能。你可以通过故意在第 4 个线程中休眠一段时间来测试你的想法,看看消息是否被丢弃。
标题说明了一切。我是 运行 一个在 Linux EC2 实例上有 4 个线程的程序。其中三个正在监听不同的网络套接字,最后一个是网络抓取并在需要时调用一组其他功能。
如果 GIL 由第 4 个线程拥有(即当前 运行 它通过单核计算),websocket 消息是否可能 'missed' 由线程侦听?
我开始认为这是不可能的,但不明白为什么。我环顾四周,但收效甚微。
并非如此,即使您的应用程序完全被阻塞(比如通过调度或只是休眠),操作系统也会对传入的网络消息进行排队。如果 TCP 缓冲区开始溢出,您可能会丢失消息,我认为您的情况不太可能。你可以通过故意在第 4 个线程中休眠一段时间来测试你的想法,看看消息是否被丢弃。