高级IO

设置文件描述符的属性,高级IO函数会根据属性,选择自己的行为比如直接返回还是阻塞

进程自己多次加锁会用后面锁替换前面锁,一般用于多个进程之间的互斥或读共享,也就是说调用进程不会阻塞在自己持有的锁上。

测试加锁,可以探测出哪个进程在某个文件的某个区域有锁,会用现有锁信息,更新锁结构

1、io函数会检测目标文件的特性,如果是具有非阻塞的特性,那么当出现阻塞条件时,会立刻返回

      可以在循环中,去调用非阻塞的IO函数,但是在多用户多任务环境中,消耗CPU资源。

      阻塞时,进程调度可以暂时忽略阻塞状态的进程,节省CPU资源。

     程序可以利用多线程来解决应用吞吐量,但是引入了线程同步的复杂性。

2、文件锁

     fcntl可以对文件进行加锁,可以支持对任意字节范围的加锁。

     支持读共享锁和写排它锁。读共享锁,允许加共享锁,但不允许加写排他。写排他不允许加读共享。

    !)通过cmd参数

            可以尝试去检查是否可以获得锁

            可以去直接设置锁

            可以去等待设置锁成功

            但三者不是原子操作

原文地址:https://www.cnblogs.com/justart/p/7802211.html