我一直在玩Tornado chat demo。乍一看,new_messages
方法不是线程安全的-似乎项目可能会被添加到waiters
数组中,而同一数组在for
循环中迭代。在
这个演示不是线程安全的吗?或者,仅仅因为Python set
对象本身是线程安全的,它是线程安全的吗?Pythonset
对象是否线程安全?在这个问题上,我似乎发现了相互矛盾的观点(而且set
这个词很难在Google中有效搜索!)在
加分-为什么在迭代结束时,waiters
数组被设置为一个新的set
,而不是清空{}?在
Tags:
它是线程安全的,因为纯Python总是线程安全的。由于global interpreter lock,一次只能运行一个Python线程。在
默认情况下,Tornado应用程序中没有线程。Tornado是一个基于事件的系统,因此只有一个执行路径。关于tornado,您需要弄清楚的是在什么时候将执行交给IOLoop。在
虽然GIL确实可以防止一类线程错误,但是您仍然可以编写访问和修改程序访问路径之外的数据的应用程序。在
相关问题 更多 >
编程相关推荐