生如夏花的博客

专注于工业物联网行业数据采集,嵌入式Linux系统裁剪,5G智慧网关软件开发等

文件锁之fcntl

文件锁的作用:当第一个进程正在读或修改文件的某个部分时,使用文件锁可以阻止其他进程修改文件的相同部分。

因此文件锁可用于多个进程之间进行同步,防止进程间的竞争状态。

Linux系统支持两组给文件加锁的不同API,分别是fcntlflock。本节主要记录fcntl的实现原理以及使用方式。

任意多个进程在同一个给定字节上都可以有一把共享读锁,但一个给定字节上仅能有一个进程持有一把独占写锁

非阻塞IO

系统调用分为两类,“低速”系统调用和其他。

“低速”系统调用指的是可能会使进程永远阻塞的一类系统调用。

非阻塞I/O则指的是当进行诸如open, read, write等I/O操作时,这些操作不会永远阻塞如果操作不能完成,则调用立即出错返回,以表示继续该操作将会阻塞

一般非阻塞I/O需要不断轮询判断是否有数据要进行读写,这种情况是比较浪费CPU时间的。避免非阻塞I/O的两种方式:I/O多路转接或多线程采用阻塞I/O