如何安全使用sem_destroy?

问题描述 投票:0回答:1

我在代码中使用 POSIX

unnamed semaphore
。我想用
sem_destroy
来销毁信号量。但我读了Linux手册页。它说“销毁其他进程或线程当前被阻塞的信号量(在 sem_wait(3) 中)会产生未定义的行为。”。

我的问题是:
如何安全地使用 sem_destroy(避免在其他线程或进程被阻塞时调用 sem_destroy)

c posix semaphore
1个回答
0
投票

如何安全地使用 sem_destroy(避免在其他线程或进程被阻塞时调用 sem_destroy)

你的情况可能会更好不是。当没有剩余进程可以访问未命名信号量时,它将自动清理。

但是如果您坚持这样做,那么您需要认识到销毁同步对象(例如信号量)的唯一安全时间是当有权访问它的每个进程的每个线程都“完成”时。最常见的是,您知道是这种情况,因为当前线程是唯一可以访问信号量的活动线程。如果对所涉及的各种线程和进程的行为有足够的了解,您可能能够更快地了解,甚至设计出正确的环境。

© www.soinside.com 2019 - 2024. All rights reserved.