有人说python字典是线程安全的。这是否意味着我可以或不能在字典中修改项目?
这两个概念完全不同。
线程安全性意味着两个线程无法同时修改同一对象,从而使系统处于不一致状态。
也就是说,在迭代字典时不能修改字典。请参阅文档。。
字典p在迭代过程中不应被突变。在字典上进行迭代时,修改键的值是安全的(自Python 2.1起),但前提是只要键的集合不变即可。
问题内容: 我有一堂课,有一本字典 我正在运行4个线程(每个餐厅一个线程)来调用方法。这是每个线程运行的函数: 这样安全吗,还是在致电之前必须使用锁? 问题答案: Python的内置结构对于单个操作是线程安全的,但是有时很难看到一条语句真正变成了多个操作。 您的代码应该是安全的。注意:这里的锁几乎不会增加任何开销,并且让您高枕无忧。 http://effbot.org/pyfaq/what-kin
问题内容: 我注意到,通常建议使用具有多个线程的队列,而不是列表和。这是因为列表不是线程安全的,还是出于其他原因? 问题答案: 列表本身是线程安全的。在CPython中,GIL防止对它们的并发访问,而其他实现则请小心地为它们的列表实现使用细粒度锁或同步数据类型。但是,虽然列表本身不会因尝试并发访问而损坏,但列表的数据不受保护。例如: 如果另一个线程做同样的事情,则不能保证实际上将增加1,因为这不是
问题内容: 我想知道Python内置容器(列表,向量,集合…)是否是线程安全的?还是我需要为共享变量实现锁定/解锁环境? 问题答案: 您需要为将在Python中修改的所有共享变量实现自己的锁定。你不必担心从不会被修改的变量读(即并发读取都OK了),所以稳定的类型(,,)都 可能是 安全的,但它不会伤害。对于你将要改变的东西- ,,,和大多数其他的对象,你应该有自己的锁定机制(而就地操作都OK在大多
问题内容: 在中,此变量被声明为是我的问题,在某些调用之后检查值还是在多线程代码中使用perror()是安全的。这是线程安全变量吗?如果没有,那还有什么选择呢? 我在x86体系结构上将Linux与gcc一起使用。 问题答案: 是的,它是线程安全的。在Linux上,全局errno变量是特定于线程的。POSIX要求errno必须是线程安全的。 参见http://www.unix.org/whitepa
问题内容: 我们在项目中使用了Drools kieSessions。许多线程可以创建新的kieSession。有时在创建会话时线程可能会挂起。因此,问题是: 首先 是kieContainer.newKieSession线程安全操作吗? 上吊的原因可能是肮脏的文字或阅读的kie会话集之类的东西吗? 问题答案: 当我在实践中检查 不是线程安全的操作。
问题内容: 在Java中:线程安全吗,即返回的迭代器是在任何时候反映列表的当前状态,还是仅在创建列表时反映列表的状态? 问题答案: List.iterator()的行为未定义或与其他List实现保持一致。 对于ArrayList,LinkedList,如果在迭代列表时对其进行了修改,则可以获得ConcurrentModificationException。(这不能保证)避免此问题的方法是使用syn