进程锁 Lock
作者: 莫烦 发布于: 2016-01-01
编辑: 学习资料:
这次我们讲进程锁的运用。
不加进程锁¶
让我们看看没有加进程锁时会产生什么样的结果。
在上面的代码中,我们定义了一个共享变量v
,两个进程都可以对它进行操作。 在job()
中我们想让v
每隔0.1秒输出一次累加num
的结果,但是在两个进程p1
和p2
中设定了不同的累加值。所以接下来让我们来看下这两个进程是否会出现冲突。
运行一下:
我们可以看到,进程1和进程2在相互抢着使用共享内存v
。
加进程锁¶
为了解决上述不同进程抢共享资源的问题,我们可以用加进程锁来解决。
首先需要定义一个进程锁
然后将进程锁的信息传入各个进程中
在job()
中设置进程锁的使用,保证运行时一个进程的对锁内内容的独占
完整代码:
运行一下,让我们看看是否还会出现抢占资源的情况:
显然,进程锁保证了进程p1
的完整运行,然后才进行了进程p2
的运行