|
如果有多个线程同时操作一个对象,那么可能会造成数据有问题。。所以要用Rlock线程锁。
但是用了线程锁,数据还是串了,求大神帮我看看是什么原因。
代码如下:
- import threading
- import time
- li = []
- mylock = threading.RLock()
- def fun(arg):
- mylock.acquire()
- global li
- li.append(arg)
- mylock.release()
- for i in xrange(1000000):
- t = threading.Thread(target=fun, args=(i,))
- t.start()
- time.sleep(1)
- for i in li:
- if li[i] != i:
- print i
复制代码
运行结果:
- 480885
- 480884
- 481366
- 481365
- 481846
- 481845
- 484384
- 484385
- 484386
- 484383
- 839900
- 839901
- 839902
- 839899
- 841788
- 841787
- 898216
- 898215
复制代码
|
|