建议性锁和强制性锁的区别

来源:互联网 发布:广西广电网络三网融合 编辑:程序博客网 时间:2024/04/28 08:23

       建议性锁:

所谓建议性锁就是假定人们都会遵守某些规则去干一件事。例如,人与车看到红灯都会停,而看到绿灯才会继续走,我们可以称红绿等为建议锁。但这只是一种规则而已,你并不防止某些人强闯红灯。而强制性锁是你想闯红灯也闯不了。

建议性锁只在cooperating processes之间才有用,对cooperating process的理解是最重要的,它指的是会影响其它进程的进程或被别的进程所影响的进程,举两个例子:(1)我们可以同时在两个窗口中运行同一个命令,对同一个文件进行操作,那么这两个进程就是cooperating processes;(2)cat file| sort,那么cat和sort产生的进程就是使用了pipe的cooperating processes。

     强制性锁:

      强制性锁是由内核执行的。当文件被上锁来进行写入操作时,在锁定该文件的进程释放该锁之前,内核会阻止任何对该文件的读或写访问,每次读或写访问都得检查锁是否存在。

1.如果想要打开一个有强制性记录锁的文件,而且open函数中指定了O_TRUNC时,即便没有指定O_NONBLOCKopen调用也会立即出错返回,errno置为EAGAIN

2.强制性锁可以避开。但意义不大,原理是创建个新文件,并删除(unlink不受强制性影响)原有的文件。

3.强制性锁虽然解决非协作进程来捣乱的问题,但是,对于多个进程更新共享文件时,对共享数据仍需要某种锁。


0 0
原创粉丝点击