伯乐在线:http://python.jobbole.com/87743/
翻译自:https://opensource.com/article/17/4/grok-gil
线程锁:http://python.jobbole.com/82723/
python threading模块有两类锁:互斥锁(threading.Lock )和可重用锁(threading.RLock)
互斥锁:lock.acquire() lock.acquire() 造成迭代死锁。
“可重入锁”:threading.RLock。RLock内部维护着一个Lock和一个counter变量,counter记录了acquire的次数,从而使得资源可以被多次require。直到一个线程所有的acquire都被release,其他的线程才能获得资源。
可重用锁:rlock.acquire() rlock.acquire() 不会造成迭代死锁。
加锁的结果会造成阻塞,而且会造成开锁大。会根据顺序由并发的多线程按顺序输出,如果后面的线程执行过快,需要等待前面的进程结束后其才能结束
貌似有点像队列的概念了 ,不过在加锁的很多场景下确实可以通过队列去解决。