为什么进程最多只能创建 10000 个窗口?
如果你的程序是一条脱缰的野牛,你任由它随意运行,则你会发现这样一个规律:
它最多只能创建 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?》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。
相关推荐
- 深度理解:struct和class的区别
- Posted on 01月20日
- 在什么情况下才需要调用 LockWindowUpdate ?
- Posted on 12月28日
- 别只看表面:方法Char.IsDigit探讨
- Posted on 12月25日
- 为什么在安腾平台上的页面大小是8KB
- Posted on 09月30日
评论已关闭。