我有一个硬件接口,我想在同一个工作站上的两个应用程序(进程)中使用。硬件需要一个初始化调用,然后任何一个应用程序都使用相同的函数(在同一个库中)与硬件进行许多事务。
所以每个应用程序都应该像这样:
main()
// I don't know if another app already init'ed the HW
ret = hw_init_lock(non-blocking)
if ret = OK
// no one else has done this, I have to
init_hw()
else
//someone else has already init'ed the HW, I gotta make sure it stays that way
//as long as I'm alive
increment_hw_init_ref_counter()
hw_trans_lock(blocking)
hw_trans()
hw_trans_unlock()
....
//exit app, uninit hw if we are last out
ret = decrement_hw_init_ref_counter()
if ret == 0
uninit_hw()
exit(0)
我可以在两个应用程序之间共享的锁和引用计数调用中使用什么机制?我正在考虑命名管道,即 mkfifo()。