none
使用VC++ 6.0时候的一些疑问(关于句柄) RRS feed

  • 问题


    1.        句柄数如何控制;
    2.        使用异步socket通讯怎样控制句柄数;
    3.        各个操作系统的句柄数到底最大是多少;
    4.        每个进程的句柄数最大是多少。

    我查询了一些论坛,说法如下,也请大家补充:

    GDIProcessHandleQuota项设置GDI句柄数量,默认值为2710(16进制)/10000(10进制),该值的允许范围为 256 ~ 16384 ,将其调整为大于默认的10000的值。如果您的系统配置了2G或更多内容,不妨将其设置为允许的最大值 16384(10进制);

      USERProcessHandleQuota项设置用户句柄数量,默认值同样为2710(16进制)/10000(10进制),该值的允许范围为 200 ~ 18000 ,将其调整为更多的数值。同样地,对于具有2GB或更多物理内存的系统,不妨将用户句柄数直接设置为上限 18000(10进制);

      需要强调的是,修改“GDIProcessHandleQuota”与“USERProcessHandleQuota”值时,不要超过其接受的上限,不然,将导致Windows 无法工作或运行不稳定。另一方面,即使您的调整其超过其允许的上限,如果发现修改后Windows出现不稳定的症状,便需要将相应的数值调低些,或者恢复默认值。

      注:

      本技巧适用于Windows 2000、 Windows XP、 Windows Server 2003、Windows Vista;


     

    2016年9月22日 9:44

全部回复

  • Hi Zhuang0123,

    感谢在MSDN论坛发帖。

    >>句柄数如何控制;

    通常我们使用CloseHandle函数或者通过控制对象的方式控制句柄。应用程序创建对象时,系统会提供一个句柄。当应用程序销毁对象时,句柄失效并被操作系统回收。

    >>使用异步socket通讯怎样控制句柄数;

    在socket通信中,我们使用closesocket 控制。释放所有与socket相关的资源。包括句柄。

    详情参考以下文档。

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms738547%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

    >>各个操作系统的句柄数到底最大是多少;每个进程的句柄数最大是多少。

    系统中的开放句柄的数量只受可用存储器量的限制某些对象类型支持每个会话每个进程句柄数量有限。

    详细内容参考以下文档。

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms725486(v=vs.85).aspx

    希望对你有所帮助。

    Best Regards,
    Sera Yu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    2016年9月23日 7:48