Python Tornado聊天演示应用程序是否线程安全?

2024-04-26 02:35:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在玩Tornado chat demo。乍一看,new_messages方法不是线程安全的-似乎项目可能会被添加到waiters数组中,而同一数组在for循环中迭代。在

这个演示不是线程安全的吗?或者,仅仅因为Python set对象本身是线程安全的,它是线程安全的吗?Pythonset对象是否线程安全?在这个问题上,我似乎发现了相互矛盾的观点(而且set这个词很难在Google中有效搜索!)在

加分-为什么在迭代结束时,waiters数组被设置为一个新的set,而不是清空{}?在


Tags: 项目对象方法newfordemochat数组
2条回答

它是线程安全的,因为纯Python总是线程安全的。由于global interpreter lock,一次只能运行一个Python线程。在

默认情况下,Tornado应用程序中没有线程。Tornado是一个基于事件的系统,因此只有一个执行路径。关于tornado,您需要弄清楚的是在什么时候将执行交给IOLoop。在

虽然GIL确实可以防止一类线程错误,但是您仍然可以编写访问和修改程序访问路径之外的数据的应用程序。在

相关问题 更多 >