<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/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Rotor</title>
        <link>http://geekswithblogs.net/khanna/category/641.aspx</link>
        <description>Rotor</description>
        <language>en-US</language>
        <copyright>Gaurav Khanna</copyright>
        <managingEditor>gaurav@wintoolzone.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>How the SSCLI [a.k.a. Rotor] managed &amp;quot;new&amp;quot; works</title>
            <link>http://geekswithblogs.net/khanna/archive/2007/03/29/110228.aspx</link>
            <description>&lt;p&gt;&lt;span style="font-size: 0.75em; font-family: arial,helvetica,sans-serif"&gt;&lt;font face="Trebuchet MS" size="2"&gt;One of the best ways to understand how the CLR works internally is to have a look at the &lt;strong&gt;&lt;em&gt;SSCLI [a.k.a Rotor]&lt;/em&gt;&lt;/strong&gt; &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/net/sscli/" target="_blank"&gt;&lt;font face="Trebuchet MS" size="2"&gt;source code&lt;/font&gt;&lt;/a&gt;&lt;font face="Trebuchet MS" size="2"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Trebuchet MS" size="2"&gt;In &lt;strong&gt;&lt;a href="http://www.wintoolzone.com/articles/How_Rotor_Managed_New_Works.aspx" target="_blank"&gt;How the SSCLI [a.k.a. Rotor] managed "new" works&lt;/a&gt;&lt;/strong&gt;, I have used &lt;em&gt;Rotor&lt;/em&gt; source code to discuss what happens behind the scenes when you use the managed &lt;em&gt;new&lt;/em&gt; operator to instantiate a managed type, discussing implications of object size, how requests from multiple threads are handled, the different validations that are done, when &lt;em&gt;out-of-memory&lt;/em&gt; exception is thrown, etc. If you are a managed code developer, you may learn a thing or two that can help you write better code besides understanding how the managed allocation works internally.&lt;/font&gt;&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=110228"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=110228" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/khanna/aggbug/110228.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gaurav Khanna [gaurav@wintoolzone.com]</dc:creator>
            <guid>http://geekswithblogs.net/khanna/archive/2007/03/29/110228.aspx</guid>
            <pubDate>Thu, 29 Mar 2007 20:46:00 GMT</pubDate>
            <comments>http://geekswithblogs.net/khanna/archive/2007/03/29/110228.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/khanna/comments/commentRss/110228.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/khanna/services/trackbacks/110228.aspx</trackback:ping>
        </item>
        <item>
            <title>How the SSCLI [a.k.a. Rotor] managed &amp;quot;new&amp;quot; works</title>
            <link>http://geekswithblogs.net/khanna/archive/2007/02/13/How-the-SSCLI-a.k.a.-Rotor-managed-ampquotnewampquot-works.aspx</link>
            <description>&lt;p&gt;&lt;span style="font-size: 0.75em; font-family: arial,helvetica,sans-serif"&gt;&lt;font face="tre" size="2"&gt;One of the best ways to understand how the CLR works internally is to have a look at the &lt;strong&gt;&lt;em&gt;SSCLI [a.k.a Rotor]&lt;/em&gt;&lt;/strong&gt; &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/net/sscli/" target="_blank"&gt;&lt;font face="tre" size="2"&gt;source code&lt;/font&gt;&lt;/a&gt;&lt;font face="tre" size="2"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="tre" size="2"&gt;In &lt;strong&gt;&lt;a href="http://www.wintoolzone.com/articles/How_Rotor_Managed_New_Works.aspx" target="_blank"&gt;How the SSCLI [a.k.a. Rotor] managed "new" works&lt;/a&gt;&lt;/strong&gt;, I have used &lt;em&gt;Rotor&lt;/em&gt; source code to discuss what happens behind the scenes when you use the managed &lt;em&gt;new&lt;/em&gt; operator to instantiate a managed type, discussing implications of object size, how requests from multiple threads are handled, the different validations that are done, when &lt;em&gt;out-of-memory&lt;/em&gt; exception is thrown, etc. If you are a managed code developer, you may learn a thing or two that can help you write better code besides understanding how the managed allocation works internally.&lt;/font&gt;&lt;/p&gt; &lt;p class="zoundry_bw_tags"&gt;&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;&lt;span class="ztags"&gt;&lt;font size="2"&gt;&lt;font face="tre"&gt;&lt;span class="ztagspace"&gt;Technorati&lt;/span&gt; : &lt;/font&gt;&lt;/font&gt;&lt;a class="ztag" href="http://technorati.com/tag/.NET%20Framework" rel="tag"&gt;&lt;font face="tre" size="2"&gt;.NET Framework&lt;/font&gt;&lt;/a&gt;&lt;font face="tre" size="2"&gt;, &lt;/font&gt;&lt;a class="ztag" href="http://technorati.com/tag/Common%20language%20Infrastructure" rel="tag"&gt;&lt;font face="tre" size="2"&gt;Common language Infrastructure&lt;/font&gt;&lt;/a&gt;&lt;font face="tre" size="2"&gt;, &lt;/font&gt;&lt;a class="ztag" href="http://technorati.com/tag/Rotor" rel="tag"&gt;&lt;font face="tre" size="2"&gt;Rotor&lt;/font&gt;&lt;/a&gt;&lt;font face="tre" size="2"&gt;, &lt;/font&gt;&lt;a class="ztag" href="http://technorati.com/tag/SSCLI" rel="tag"&gt;&lt;font face="tre" size="2"&gt;SSCLI&lt;/font&gt;&lt;/a&gt;&lt;font face="tre" size="2"&gt;, &lt;/font&gt;&lt;a class="ztag" href="http://technorati.com/tag/article" rel="tag"&gt;&lt;font face="tre" size="2"&gt;article&lt;/font&gt;&lt;/a&gt;&lt;font face="tre" size="2"&gt;, &lt;/font&gt;&lt;a class="ztag" href="http://technorati.com/tag/clr" rel="tag"&gt;&lt;font face="tre" size="2"&gt;clr&lt;/font&gt;&lt;/a&gt;&lt;font face="tre" size="2"&gt;, &lt;/font&gt;&lt;a class="ztag" href="http://technorati.com/tag/common%20language%20runtime" rel="tag"&gt;&lt;font face="tre" size="2"&gt;common language runtime&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;font face="tre" size="2"&gt; &lt;br /&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Del.icio.us&lt;/span&gt; : &lt;a class="ztag" href="http://del.icio.us/tag/.NET+Framework" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a class="ztag" href="http://del.icio.us/tag/Common+language+Infrastructure" rel="tag"&gt;Common language Infrastructure&lt;/a&gt;, &lt;a class="ztag" href="http://del.icio.us/tag/Rotor" rel="tag"&gt;Rotor&lt;/a&gt;, &lt;a class="ztag" href="http://del.icio.us/tag/SSCLI" rel="tag"&gt;SSCLI&lt;/a&gt;, &lt;a class="ztag" href="http://del.icio.us/tag/article" rel="tag"&gt;article&lt;/a&gt;, &lt;a class="ztag" href="http://del.icio.us/tag/clr" rel="tag"&gt;clr&lt;/a&gt;, &lt;a class="ztag" href="http://del.icio.us/tag/common+language+runtime" rel="tag"&gt;common language runtime&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="ztags"&gt;&lt;span class="ztagspace"&gt;Buzznet&lt;/span&gt; : &lt;a class="ztag" href="http://www.buzznet.com/buzzwords/.NET%20Framework" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a class="ztag" href="http://www.buzznet.com/buzzwords/Common%20language%20Infrastructure" rel="tag"&gt;Common language Infrastructure&lt;/a&gt;, &lt;a class="ztag" href="http://www.buzznet.com/buzzwords/Rotor" rel="tag"&gt;Rotor&lt;/a&gt;, &lt;a class="ztag" href="http://www.buzznet.com/buzzwords/SSCLI" rel="tag"&gt;SSCLI&lt;/a&gt;, &lt;a class="ztag" href="http://www.buzznet.com/buzzwords/article" rel="tag"&gt;article&lt;/a&gt;, &lt;a class="ztag" href="http://www.buzznet.com/buzzwords/clr" rel="tag"&gt;clr&lt;/a&gt;, &lt;a class="ztag" href="http://www.buzznet.com/buzzwords/common%20language%20runtime" rel="tag"&gt;common language runtime&lt;/a&gt;&lt;/span&gt; &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113755"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113755" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/khanna/aggbug/113755.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gaurav Khanna</dc:creator>
            <guid>http://geekswithblogs.net/khanna/archive/2007/02/13/How-the-SSCLI-a.k.a.-Rotor-managed-ampquotnewampquot-works.aspx</guid>
            <pubDate>Tue, 13 Feb 2007 10:48:49 GMT</pubDate>
            <comments>http://geekswithblogs.net/khanna/archive/2007/02/13/How-the-SSCLI-a.k.a.-Rotor-managed-ampquotnewampquot-works.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/khanna/comments/commentRss/113755.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/khanna/services/trackbacks/113755.aspx</trackback:ping>
        </item>
        <item>
            <title>Adding process enumeration support in Rotor v1.0</title>
            <link>http://geekswithblogs.net/khanna/archive/2006/01/05/64897.aspx</link>
            <description>
&lt;div&gt;&lt;font face="Tahoma" color="darkgoldenrod" size="2"&gt;&lt;strong&gt;[Original Post Date: 
5th September 2005]&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://msdn.microsoft.com/net/sscli"&gt;&lt;font face="Tahoma" size="2"&gt;Share Source CLI&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;, better known as 
&lt;em&gt;Rotor&lt;/em&gt;, is one of the best ways to understand how .NET Framework works. 
And with the source code availability as part of &lt;em&gt;Rotor &lt;/em&gt;distribution, 
its an excellent academic/hobby interest - you can extend it by adding more 
functionality, or modify the existing one and see how it behaves.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" size="2"&gt;Yesterday, I went about doing the same. One of the 
functionality which I found missing in &lt;em&gt;Rotor &lt;/em&gt;is that of enumerating 
system process list. .NET Framework's &lt;em&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDiagnosticsProcessClassTopic.asp"&gt;System.Diagnostics.Process&lt;/a&gt;&amp;nbsp;&lt;/em&gt;class 
has methods, like &lt;em&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemdiagnosticsprocessclassgetprocessestopic.asp"&gt;GetProcesses&lt;/a&gt;, 
&lt;/em&gt;that allow you to do the same. &lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" size="2"&gt;So, I went about implementing &lt;em&gt;GetProcesses 
&lt;/em&gt;method overloads&lt;em&gt;&lt;/em&gt;in &lt;em&gt;System.Diagnostics.Process &lt;/em&gt;class that 
allow me to enumerate process list on the &lt;em&gt;local machine only. &lt;/em&gt;This 
required modification in the Platform Adaptation Layer (PAL) of &lt;em&gt;Rotor. 
&lt;/em&gt;Since, I just have it running on Win32 for the moment, I modified the Win32 
PAL to implement the support via &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/perfmon/base/taking_a_snapshot_and_viewing_processes.asp"&gt;&lt;font face="Tahoma" size="2"&gt;ToolHelp&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt; API. Now, on a 
Windows system, its possible to enumerate the system process list using 
&lt;em&gt;Rotor&lt;/em&gt;, as exemplified by the snippet below:&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;
&lt;div&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;using&lt;b&gt; 
System;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;&lt;/font&gt;
&lt;div&gt;&lt;em&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;using&lt;b&gt; 
System.Diagnostics;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/div&gt;&lt;font color="#0000ff"&gt;
&lt;div&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;public&lt;b&gt;&lt;/b&gt;class&lt;b&gt; EnumProcess&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" color="#000000" size="2"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 50px"&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;public&lt;b&gt;&lt;/b&gt;static&lt;b&gt;&lt;/b&gt;void&lt;b&gt; 
Main()&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 50px"&gt;&lt;font face="Tahoma" color="#000000" size="2"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 100px"&gt;&lt;font face="Tahoma" color="#000000" size="2"&gt;&lt;em&gt;Process[] arrProcess = Process.GetProcesses();&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 100px"&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;if&lt;strong&gt; (&lt;/strong&gt;arrProcess &lt;strong&gt;== 
&lt;/strong&gt;null&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 100px"&gt;&lt;font face="Tahoma" color="#000000" size="2"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 150px"&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;Console.WriteLine("Unable to get process 
list!"&lt;b&gt;);&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 150px"&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;return&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 100px"&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma" size="2"&gt;}&lt;br&gt;Console.WriteLine("{0} processes 
enumerated.",arrProcess.Length);&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 100px"&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma" size="2"&gt;foreach (Process proc in arrProcess)&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 150px"&gt;&lt;font color="#000000"&gt;&lt;em&gt;&lt;font face="Tahoma" size="2"&gt;Console.WriteLine("Process ID {0}, Handle: {1}", proc.Id, 
proc.Handle);&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="PADDING-LEFT: 50px"&gt;&lt;font face="Tahoma" color="#000000" size="2"&gt;&lt;em&gt;}&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" color="#000000" size="2"&gt;&lt;em&gt;}&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#000000"&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font color="#000000"&gt;&lt;font face="Tahoma" size="2"&gt;You can download the updated 
source files for &lt;em&gt;Rotor v1.0 &lt;/em&gt;from &lt;/font&gt;&lt;a href="http://www.wintoolzone.com/showpage.aspx?url=rotor.aspx"&gt;&lt;font face="Tahoma" size="2"&gt;http://www.wintoolzone.com/showpage.aspx?url=rotor.aspx&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;. The zipped archive contains &lt;em&gt;Changes for Process 
Enumeration.txt &lt;/em&gt;that indicates where the updated files need to be copied. 
Once done, rebuild &lt;em&gt;Rotor &lt;/em&gt;to get the changes into 
effect.&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div id="CSBloggerSig"&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=64897"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=64897" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/khanna/aggbug/64897.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gaurav Khanna</dc:creator>
            <guid>http://geekswithblogs.net/khanna/archive/2006/01/05/64897.aspx</guid>
            <pubDate>Thu, 05 Jan 2006 17:44:00 GMT</pubDate>
            <comments>http://geekswithblogs.net/khanna/archive/2006/01/05/64897.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/khanna/comments/commentRss/64897.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/khanna/services/trackbacks/64897.aspx</trackback:ping>
        </item>
        <item>
            <title>..and ThreadPool.GetMinThreads</title>
            <link>http://geekswithblogs.net/khanna/archive/2004/07/25/8833.aspx</link>
            <description>&lt;font face="Arial,Helvetica,sans-serif" size="2"&gt;And I am finally done with extending the Rotor's ThreadPool class. Finished implementing the GetMinThreads method.&lt;br&gt;&lt;br&gt;

Download the source code from &lt;a href="http://www.wintoolzone.com/showpage.aspx?url=rotor.aspx" target="_blank"&gt;http://www.wintoolzone.com/showpage.aspx?url=rotor.aspx&lt;/a&gt;.&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=8833"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=8833" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/khanna/aggbug/8833.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gaurav Khanna</dc:creator>
            <guid>http://geekswithblogs.net/khanna/archive/2004/07/25/8833.aspx</guid>
            <pubDate>Sun, 25 Jul 2004 21:46:00 GMT</pubDate>
            <comments>http://geekswithblogs.net/khanna/archive/2004/07/25/8833.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/khanna/comments/commentRss/8833.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/khanna/services/trackbacks/8833.aspx</trackback:ping>
        </item>
        <item>
            <title>Rotor - SetMaxThreads, SetMinThreads</title>
            <link>http://geekswithblogs.net/khanna/archive/2004/07/22/8740.aspx</link>
            <description>&lt;font face="Arial,Helvetica,sans-serif" size="2"&gt;Just finished extending &lt;a href="http://msdn.microsoft.com/net/sscli/" target="_blank"&gt;Rotor's &lt;/a&gt;&lt;i&gt;ThreadPool&lt;/i&gt; class to support &lt;i&gt;SetMaxThreads&lt;/i&gt; and &lt;i&gt;SetMinThreads&lt;/i&gt; methods - to modify the extent of the threadpool maintained by the Rotor runtime - just like .NET FX 2.0 has it.&lt;br&gt;&lt;br&gt;

Will post the source code soon...meanwhile, here's my implementation of &lt;i&gt;SetMinThreadsInternal&lt;/i&gt; in &lt;i&gt;Win32ThreadPool.cpp&lt;/i&gt;:

&lt;pre&gt;/************************************************************************/
// Will be used to set the minimum number of threads in the Rotor Threadpool
// Kumar Gaurav Khanna - 22-Jul-2004
BOOL ThreadpoolMgr::SetMinThreads(DWORD MinWorkerThreads, 
                                     DWORD MinIOCompletionThreads)
{

    if (IsInitialized())
    {
        BOOL result = FALSE;

        // 1) cannot have minimum worker thread limit &lt;=0
        // 2) cannot have minimum worker thread limit equal to or greater than the maximum worker thread limit
        if ((MinWorkerThreads &gt; 0) &amp;&amp; (MinWorkerThreads &lt; MaxLimitTotalWorkerThreads)) 
        {
            if (MinWorkerThreads &lt;= (DWORD) MinLimitTotalWorkerThreads)
            {
                MinLimitTotalWorkerThreads = MinWorkerThreads;
                result = TRUE;
            }
        }

        return result;
    }

    if (InterlockedCompareExchange(&amp;Initialization, 1, 0) == 0)
	{
		Initialize();

        BOOL result = FALSE;
        
        if ((MinWorkerThreads &gt; 0) &amp;&amp; (MinWorkerThreads &lt; MaxLimitTotalWorkerThreads))
        {
            if (MinWorkerThreads &lt;= (DWORD) MinLimitTotalWorkerThreads) 
            {
                MinLimitTotalWorkerThreads = MinWorkerThreads;
                result = TRUE;
            }
        }

		Initialization = -1;

        return result;
	}
    else // someone else is initializing. Too late, return false
    {
        return FALSE;
    }

}&lt;/pre&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=8740"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=8740" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/khanna/aggbug/8740.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gaurav Khanna</dc:creator>
            <guid>http://geekswithblogs.net/khanna/archive/2004/07/22/8740.aspx</guid>
            <pubDate>Fri, 23 Jul 2004 02:02:00 GMT</pubDate>
            <comments>http://geekswithblogs.net/khanna/archive/2004/07/22/8740.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/khanna/comments/commentRss/8740.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/khanna/services/trackbacks/8740.aspx</trackback:ping>
        </item>
    </channel>
</rss>