好的,运行同一个可执行文件的多个实例?

J. *_*ers 6 linux operating-system

考虑一个名为makecookie(普通旧串行/非并行程序)的可执行文件.我想同时运行它的两个实例(例如,通过打开两个终端),如下所示:

第一航站楼:

~/makecookie vanilla dataToRead.dat
Run Code Online (Sandbox Code Playgroud)

第二航站楼:

cd ~
mkdir secondJar
ln -s ~/makecookie secondJar/
secondJar/makecookie chocolate dataToRead.dat
Run Code Online (Sandbox Code Playgroud)

第二个参数是配置字符串,第三个参数是要打开和读取的数据文件.结果将输出到stdout终端.

这会导致同一个可执行文件同时执行.这有什么问题吗?为什么或者为什么不?

jbl*_*ixr 5

运行同一可执行文件的多个实例不会导致任何问题.在操作系统的眼中,它们是两个不同的过程.每个实例都有自己的页表,文件描述符,堆栈,PID等,它们独立于所有其他实例.

但是当您在不同进程上访问相同资源时,您必须使用任何锁定策略来同步资源访问.例如,写入同一文件的两个实例将导致文件中的混乱,其中一个实例可能在另一个实例的数据中间写入.

从同一个文件读取的两个实例不会成为问题,但是当一个写入和其他读取时,结果将是混乱的.注意:每个实例都有自己的读/写指针,它们在读/写时独立于其他实例.

由于您dataToRead.dat纯粹是为了阅读而使用该文件,因此不会出现任何问题.

总体而言,如果您已正确同步资源访问权限,则运行多个实例时没有问题.