设置文件描述符的属性,高级IO函数会根据属性,选择自己的行为比如直接返回还是阻塞
进程自己多次加锁会用后面锁替换前面锁,一般用于多个进程之间的互斥或读共享,也就是说调用进程不会阻塞在自己持有的锁上。
测试加锁,可以探测出哪个进程在某个文件的某个区域有锁,会用现有锁信息,更新锁结构
1、io函数会检测目标文件的特性,如果是具有非阻塞的特性,那么当出现阻塞条件时,会立刻返回
可以在循环中,去调用非阻塞的IO函数,但是在多用户多任务环境中,消耗CPU资源。
阻塞时,进程调度可以暂时忽略阻塞状态的进程,节省CPU资源。
程序可以利用多线程来解决应用吞吐量,但是引入了线程同步的复杂性。
2、文件锁
fcntl可以对文件进行加锁,可以支持对任意字节范围的加锁。
支持读共享锁和写排它锁。读共享锁,允许加共享锁,但不允许加写排他。写排他不允许加读共享。
!)通过cmd参数
可以尝试去检查是否可以获得锁
可以去直接设置锁
可以去等待设置锁成功
但三者不是原子操作