我想编写一个命令行实用程序,可用于同步不同控制台中程序的执行。
Console A:
$ first_program && semaphore -signal
Console B:
$ semaphore -wait && second_program
第一个程序需要很长时间才能完成。第二个程序只有在第一个程序完成后才能启动。
我需要哪个同步对象来实现这个?
我想编写一个命令行实用程序,可用于同步不同控制台中程序的执行。
Console A:
$ first_program && semaphore -signal
Console B:
$ semaphore -wait && second_program
第一个程序需要很长时间才能完成。第二个程序只有在第一个程序完成后才能启动。
我需要哪个同步对象来实现这个?
您不需要为此使用 Python。考虑到您使用的是 Unix,请尝试以下操作:
首先,为信号量创建一个管道。
mknod /tmp/semaphore p
然后,程序:
Console A:
$ first_program && echo a > /tmp/semaphore
Console B:
$ read < /tmp/semaphore && second_program
实际上,这种方法是双向的。读取将阻塞,直到有写入,反之亦然。
如果他们在同一台机器上,第一个程序可以访问一个临时文件。
python中有一个Gamin模块,可以让你的第二个程序坐在那里等待而不占用资源。这不是一个忙碌的等待,或者做任何与睡眠或类似的事情。