﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-SillyRabbit-随笔分类-winapi</title><link>http://www.cppblog.com/SillyRabbit/category/20406.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 09 Mar 2013 17:10:59 GMT</lastBuildDate><pubDate>Sat, 09 Mar 2013 17:10:59 GMT</pubDate><ttl>60</ttl><item><title>DisableThreadLibraryCalls </title><link>http://www.cppblog.com/SillyRabbit/archive/2013/03/06/winapi.html</link><dc:creator>SillyRabbit</dc:creator><author>SillyRabbit</author><pubDate>Wed, 06 Mar 2013 03:06:00 GMT</pubDate><guid>http://www.cppblog.com/SillyRabbit/archive/2013/03/06/winapi.html</guid><description><![CDATA[<div id="article_content"> <p>BOOL WINAPI DisableThreadLibraryCalls(<br />&nbsp; __in&nbsp; HMODULE <em>hModule</em><br />);</p> <p>Disables the DLL_THREAD_ATTACH and DLL_THREAD_DETACH notifications  for the specified dynamic-link library (DLL). This can reduce the size  of the working set for some applications.</p> <p>&nbsp;</p> <p>禁用指定的DLL的DLL_THREAD_ATTACH和DLL_THREAD_DETACH通知，这样可以减小某些程序的工作集大小。</p> <p>&nbsp;</p> <p>Remarks:</p> <p>&nbsp;</p> <p>The <strong>DisableThreadLibraryCalls</strong> function lets a DLL  disable the DLL_THREAD_ATTACH and DLL_THREAD_DETACH notification calls.  This can be a useful optimization for multithreaded applications that  have many DLLs, frequently create and delete threads, and whose DLLs do  not need these thread-level notifications of attachment/detachment. A  remote procedure call (RPC) server application is an example of such an  application. In these sorts of applications, DLL initialization routines  often remain in memory to service DLL_THREAD_ATTACH and  DLL_THREAD_DETACH notifications. By disabling the notifications, the DLL  initialization code is not paged in because a thread is created or  deleted, thus reducing the size of the application's working code set.  To implement the optimization, modify a DLL's DLL_PROCESS_ATTACH code to  call <strong>DisableThreadLibraryCalls</strong>.</p> <p>&nbsp;</p> <p>该函数禁用一个DLL的DLL_THREAD_ATTACH和DLL_THREAD_DETACH通知。这对于那些经常创建和删除线程的调用很多 DLL的多线程程序是一个很有用的选项。如果这些DLL并不需要这些线程级的attachment/detachment通知。远程过程调用服务程序就是 一个例子。在这些程序里，DLL的初始化代码经常留在物理内存里，以相应DLL_THREAD_ATTACH和DLL_THREAD_DETACH通知。 通过禁用这些通知，DLL的初始化代码不会由于线程的创建和删除被换页至物理内存，这样就可以减小工作代码集的大小。要实现这个选项，可以在响应 DLL_PROCESS_ATTACH通知的时候调用<strong>DisableThreadLibraryCalls</strong></p></div><img src ="http://www.cppblog.com/SillyRabbit/aggbug/198250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/SillyRabbit/" target="_blank">SillyRabbit</a> 2013-03-06 11:06 <a href="http://www.cppblog.com/SillyRabbit/archive/2013/03/06/winapi.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>