如果我在一个线程中侦听 websocket 并在另一个线程中运行函数,是否有可能错过消息



>标题真的说明了一切。我正在具有 4 个线程的 Linux EC2 实例上运行一个程序。其中三个是侦听不同的 websocket,最后一个是 webcrawl 并在需要时调用一组其他函数。

如果 GIL 归第 4 个线程所有(即它当前正在通过单核运行其计算),是否有可能被侦听的线程"错过"websocket 消息?

我开始认为这是不可能的,但不明白为什么。我环顾四周,但无济于事。

不是真的,即使您的应用程序被完全阻止,例如通过调度或只是睡眠,操作系统也会对传入的网络消息进行排队。您可能会丢失消息,例如如果TCP缓冲区开始溢出,我认为在您的情况下不太可能。您可以通过故意在第 4 个线程中睡一段时间来测试您的想法,看看消息是否被丢弃。

最新更新