死锁

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。

coding=utf-8

import threading

import time

class MyThread1(threading.Thread):

         def run(self):

                if mutexA.acquire():

                       print (self.name+'----do1---up----')

                       time.sleep(1)

                       if mutexB.acquire():

                              print (self.name+'----do1---down----')

                              mutexB.release()

                        mutexA.release()

class MyThread2(threading.Thread):

        def run(self):

             if mutexB.acquire():

                    print(self.name+'----do2---up----')

                    time.sleep(1)

                     if mutexA.acquire():

                            print (self.name+'----do2---down----')

                            mutexA.release()

                     mutexB.release()

mutexA = threading.Lock()

mutexB = threading.Lock()

if __name__ =='__main__':

      t1 = MyThread1()

      t2 = MyThread2()

      t1.start()

      t2.start()

代码中展示了一个线程的两个功能函数分别在获取了一个竞争资源之后再次获取另外的竞争

程序已经挂起在那儿了,这种现象我们就称之为”死锁“。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容