我在代码中使用POSIX unnamed semaphore
。我想使用sem_destroy
来销毁信号量。但我读到Linux manual page。它说“销毁一个其他进程或线程当前被阻塞的信号量(在sem_wait(3)中)会产生未定义的行为。"。
我的问题是:
如何安全地使用sem_destroy(避免在其他线程或进程阻塞时调用sem_destroy)
我在代码中使用POSIX unnamed semaphore
。我想使用sem_destroy
来销毁信号量。但我读到Linux manual page。它说“销毁一个其他进程或线程当前被阻塞的信号量(在sem_wait(3)中)会产生未定义的行为。"。
我的问题是:
如何安全地使用sem_destroy(避免在其他线程或进程阻塞时调用sem_destroy)
1条答案
按热度按时间jgwigjjp1#
如何安全地使用sem_destroy(避免在其他线程或进程阻塞时调用sem_destroy)
如果没有进程可以访问一个未命名的信号量,它将被自动清除。
但如果你坚持,那么你需要认识到,销毁同步对象(如信号量)的唯一安全时间是当每个进程的每个线程都可以访问它时。最常见的情况是,你知道这是因为当前线程是唯一一个可以访问信号量的线程。如果你参与其中,你可能会更快地知道,甚至可以设计出正确的环境。