您的位置:首页 > 其它

makefile j 并行编译

2016-11-12 19:53 483 查看
make -j
是项目较大时解决编译时间较长的一种方案,也有看到博客提到这个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()时文件描述词不会继承此种锁定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: