多次调用 CloseHandle 意味着什么?
文档说“你不应该”,但我认为我有一个使用命名管道的现实案例,其中一个句柄可能在外部关闭(见帖子末尾)。
在这种情况下,CloseHandle 在调试模式下抛出异常,这表明开发人员认为这很严重,但文档并不完全清楚。
(礼貌的要求:请避免回答“只是不要!”:-)。当然,一个人应该避免多次关闭一手牌,当然有一些很好的技巧可以帮助解决这个问题:我只是对如果你不这样做会发生什么感兴趣)。
我听说有些人建议,如果操作系统快速重用该句柄,您最终可能会关闭另一个不同的句柄。
这可能吗?
Windows 如何选择句柄 ID?
是否可以保证句柄值的重用频率?
(例如,TCP 确保端口号不能在某个时间范围内重复使用)。
您可以关闭跨句柄类型的句柄吗?例如,我是否会认为我正在关闭管道但最终关闭了一个事件?
谢谢!
约翰
(上下文:我在客户端/服务器模型中使用命名管道。在我看来,很难确保只有一方保证关闭句柄,例如在进程崩溃/被杀死的情况下。也许我错了,但在我看来,MSDN 示例代码肯定允许客户端关闭共享句柄,然后当服务器尝试关闭它时,它已经关闭了)。