如题,就是字符串,列表,元组等数据类型是否线程安全。
1
holajamc 2018 年 3 月 26 日 线程安全的是因为针对某一数据结构的所有操作都是线程安全的。
所以 list dict str int 都不是线程安全的。 但是有些数据结构的某些操作确实是安全的,比如 list.pop() |
2
jmc891205 2018 年 3 月 26 日
以我的理解 如果解释器用的是 CPython 由于 GIL 的存在 所有数据结构都是 thread safe 的
|
3
BBCCBB 2018 年 3 月 26 日 楼上的理解是错的
|
4
holajamc 2018 年 3 月 26 日 |
7
scriptB0y 2018 年 3 月 26 日
同意 1L,修改共享变量的时候都要加锁。
|
8
misaka19000 2018 年 3 月 26 日 via Android
我知道 quque 是线程安全的
|
9
xpresslink 2018 年 3 月 27 日
是不是安全的只要的用 dis 模块看一下字节码就明白了。字节码的每一行就是一个原子操作,多线程切换就是原子操作为单位的,只要一个操作需两行字节码的就不是线程安全的。
|
10
brokensword 2019 年 1 月 9 日
@holajamc 为什么代码运行的结果是线程安全的.......
|
11
jpch89 2019 年 2 月 15 日
@brokensword 把操作次数增加到十万次(如果不够增加到一百万次),就会发现不是线程安全的。
|
12
happyxhw 2020 年 6 月 2 日
1 、list 自己是线程安全的,所以 list.pop(),list.append(),len(list) 等都是线程安全的;
2 、list 里面的数据不一定是线程安全的,比如 list[0] += 1 就不是线程安全的,这是因为 v += 1 本身就不是原子的,这和 list 无关,反之如果 v += 1 是原子的,那么 list[0] += 1 也是线程安全的; |