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

时间:2012-03-05 15:28:52

标签: python tornado

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

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

奖励积分 - 为什么waiters数组在迭代结束时设置为新set而不是清空set

2 个答案:

答案 0 :(得分:6)

默认情况下,Tornado应用程序中不涉及任何线程。 Tornado是一个基于事件的系统,因此只有一个执行路径。你需要弄清龙卷风的事情是在什么时候你将执行权交还给IOLoop。

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

答案 1 :(得分:-1)

它是线程安全的,因为纯Python始终是线程安全的。由于global interpreter lock,任何时候都只运行一个Python线程。