如果你的程序是一条脱缰的野牛,你任由它随意运行,则你会发现这样一个规律:

它最多只能创建 10000 个窗口,系统将不会让你创建更多的窗口。

问题来了,为什么是 10000 ?

当你需要问这样一个问题的时候,就应该意识到:这事儿一开始不对。
因为早在设计之初,程序就不应该创建这么多窗口,仔细想想,10000 多个窗口,你的客户顶的住吗?

在上一篇文章中,我们提到,窗口管理器最多可以创建大约 32700 个窗口,给一个程序 10000 作为限制值,已经是可用总额的三分之一。如果你问我的话,我会说,系统已经很慷慨了。

防止程序运行并消耗所有窗口管理器对象的目的,是为了遏制失控程序对系统造成的损害。

即使一个程序失控,仍然有大约 20000 个窗口对象可供其他程序使用。其中之一甚至可能是任务管理器,用户可能会为了强制结束失控的程序而启动它。

总结

通常,我倾向于不创建非常多而复杂的用户界面,你需要考虑一些”极简型”用户。
如果,我是说如果,你有机会体验下拓扑梅尔智慧办公平台(Topomel Box),则应该可以知道:窗口并非越多越好,高效率才是王道。
生命是如此短暂,作为开发者,我们决不能随意浪费用户的生命,他(她)们有其他更加重要的事儿要做。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Why is the limit of window handles per process 10,000?》

打开网易新闻 查看更多图片