sem_remove() 不应该作为正常清理/拆卸的一部分,并且应该非常少地调用,因为实现中存在 bug。
留下未使用的信号量似乎不会造成任何伤害,并且这样做可能会提高性能。如果您担心应用程序中存在太多未使用的信号量(例如,使用 ftok() 的文件缓存),可以使用一些模运算和简单的加法来为您的信号量创建有限的范围,这些范围在某个地方。例如,ftok() % 101 + 0xBADBEEF。确保用您自己的随机值替换 0xBADBEEF。该示例将范围限制为 101 个信号量。101 是一个素数 - 因此如果您想要更多或更少,请确保用素数替换它,因为素数在理论上可以帮助更均匀地分布值。