make -j[n]是项目较大时解决编译时间较长的一种方案,也有看到博客提到这个n的设置最好为多核处理器的核数目+1
并行同时会遇到很多问题,比如我们的进程,进程的同步和互斥就是个很复杂的问题
如果把并行引入到makefile中,也需要考虑同样的问题,简单来说,目标的依赖和伪目标就类似进程的同步,lockfile则是用来控制不同
目标对文件的互斥使用的
linux中的文件锁:引自百度百科
flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。
表头文件 #include<sys/file.h>
定义函数 int flock(int fd,int operation);
参数 operation有下列四种情况:
LOCK_SH 建立共享锁定。多个进程可同时对同一个文件作共享锁定。
LOCK_EX 建立互斥锁定。一个文件同时只有一个互斥锁定。
LOCK_UN 解除文件锁定状态。
LOCK_NB 无法建立锁定时,此操作可不被阻断,马上返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合。
单一文件无法同时建立共享锁定和互斥锁定,而当使用dup()或fork()时文件描述词不会继承此种锁定。