gpt4 book ai didi

synchronization - 如何同步两个进程?

转载 作者:行者123 更新时间:2023-12-04 13:12:44 27 4
gpt4 key购买 nike

我有一个硬件接口(interface),我想在同一个工作站上的两个应用程序(进程)中使用。硬件需要一个初始化调用,然后任何一个应用程序都使用相同的函数(在同一个库中)与硬件进行许多事务。

所以每个应用程序都应该像这样:

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()。

最佳答案

POSIX semaphore是要走的路。由于您希望跨进程共享相同的信号量,因此您需要使用命名信号量。:

A named semaphore is identified by a name of the form /somename. Two processes can operate on the same named semaphore by passing the same name to sem_open(3).

关于synchronization - 如何同步两个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com