zoukankan      html  css  js  c++  java
  • linux文件锁flock

    目录

    linux文件锁flock

    NIO文件锁FileLock

    一、文件锁基本概念

    Linux中软件、硬件资源都是文件(一切皆文件),文件在多用户环境中是可共享的。

    文件锁是用于解决资源的共享使用的一种机制:当多个用户需要共享一个文件时,Linux通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态。

    flock,建议性锁,不具备强制性。一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flock只是用于检测文件是否被加锁,针对文件已经被加锁,另一个进程写入数据的情况,内核不会阻止这个进程的写入操作,也就是建议性锁的内核处理策略。

    flock主要三种操作类型:
         LOCK_SH,共享锁,多个进程可以使用同一把锁,常被用作读共享锁;
         LOCK_EX,排他锁,同时只允许一个进程使用,常被用作写锁;
         LOCK_UN,释放锁;
     

    文件锁包括建议性锁和强制性锁:

    建议性锁:要求每个使用上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁。在一般情况下,内核和系统都不使用建议性锁,它们依靠程序员遵守这个规定。(也有称:协同锁)
    强制性锁:是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作。采用强制性锁对性能的影响很大,每次读写操作都必须检查是否有锁存在。

    为了使能Linux中的强制锁功能。你须要在文件系统级别上打开它。同一时候在单个文件上打开它。其步骤是:

    1、  挂载文件系统时使用“-o mand”參数。

    2、  对于要打开强制锁功能的文件lock_file。必须打开set-group-ID位。关闭group-execute位。

    (选择此方法的原因是,当你关闭group-execute时,设置set-group-ID就没有实际的意义了)

  • 相关阅读:
    c++ 设计模式3 (重构技法 Template Method)
    C++ 设计模式2 (面向对象设计原则)
    c++ 设计模式1
    算法总结—二分搜索与旋转排序数组
    c++ 构造函数,拷贝构造函数,析构函数与赋值操作符
    题解 P2330 【[SCOI2005]繁忙的都市】
    题解 CF896C 【Willem, Chtholly and Seniorious】
    题解 P3369 【【模板】普通平衡树】
    题解 CF383C 【Propagating tree】
    题解 P1179 【数字统计】
  • 原文地址:https://www.cnblogs.com/duanxz/p/2557416.html
Copyright © 2011-2022 走看看