005-Thread
Posted hhj-study-10years
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了005-Thread相关的知识,希望对你有一定的参考价值。
主线程的特性 : 只有当所有子线程执行完毕后,主线程才会关闭
守护(主)线程(daemonic=True) : 一旦主线程关闭,即使子线程仍在执行,也会立刻停止 (start()前设置)
线程同步 : thread_a.join() --> 确保线程 thread_a 执行结束后,再执行其他线程 (start()后设置)
1. 同步锁(互斥锁) : lock = threading.Lock(),lock.acquire(),lock.release()
a. A lock is not owned by the thread that locked it; another thread may unlock it. A thread attempting to lock a lock that it has already locked will block until another thread unlocks it. Deadlocks may ensue.
2. 原本线程的执行顺序是无序的,但是使用线程同步(join)后,执行顺序就是有序的(从上到下执行)
a. 使用同步锁还是无序的
3. 死锁 : (前提:) 所有线程都要抢锁,当一个暂时拿到锁的线程没有按时释放锁,其他线程一直等待的过程就是死锁。【 并不是只有占用锁的线程才可以释放锁,即使不抢锁的线程(方法内没有 lock.acquire()),也可以释放锁,这样就不会出现死锁 】
4. 同一个线程只能启动一次,所以不能放在循环里 start()
以上是关于005-Thread的主要内容,如果未能解决你的问题,请参考以下文章