<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Implementing dprintf() without __VA_ARGS__</title>
	<atom:link href="http://www.jeffhung.net/blog/articles/jeffhung/1012/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeffhung.net/blog/articles/jeffhung/1012/</link>
	<description>(My smile insists of having nose. :-)</description>
	<lastBuildDate>Thu, 03 Nov 2011 00:43:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2-alpha</generator>
	<item>
		<title>By: jeffhung</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1012/comment-page-1/#comment-158214</link>
		<dc:creator>jeffhung</dc:creator>
		<pubDate>Mon, 04 Jan 2010 01:17:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/articles/jeffhung/1012/#comment-158214</guid>
		<description>&lt;p&gt;Hi fr3@K,&lt;/p&gt;
&lt;p&gt;這招厲害。:-)&lt;/p&gt;
&lt;p&gt;不過實務上，我把 file 與 line 以及其它資訊如 thread-id 甚至 back trace 等，一起包在一個叫 trace_info 的結構裡。這樣不僅 dprintf 可用，logging 或其它程式組件也可使用；更重要的是，這東西在 run-time (at least in debug-mode) 也很有用。&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>Hi fr3@K,</p>
<p>這招厲害。:-)</p>
<p>不過實務上，我把 file 與 line 以及其它資訊如 thread-id 甚至 back trace 等，一起包在一個叫 trace_info 的結構裡。這樣不僅 dprintf 可用，logging 或其它程式組件也可使用；更重要的是，這東西在 run-time (at least in debug-mode) 也很有用。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: fr3@K</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1012/comment-page-1/#comment-158181</link>
		<dc:creator>fr3@K</dc:creator>
		<pubDate>Sun, 03 Jan 2010 13:56:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/articles/jeffhung/1012/#comment-158181</guid>
		<description>提供一個 micro optimization...

紀錄 line number 可用 const char*. 然後把 dprintf_v4 改成:
  #define dprintf_v4 dprintf_v4_impl(__FILE__, #__LINE__)

印字串總是比印數字更有效率.</description>
		<content:encoded><![CDATA[<p>提供一個 micro optimization...</p>
<p>紀錄 line number 可用 const char*. 然後把 dprintf_v4 改成:<br />
  #define dprintf_v4 dprintf_v4_impl(__FILE__, #__LINE__)</p>
<p>印字串總是比印數字更有效率.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: av</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1012/comment-page-1/#comment-128935</link>
		<dc:creator>av</dc:creator>
		<pubDate>Mon, 19 Jan 2009 04:15:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/articles/jeffhung/1012/#comment-128935</guid>
		<description>這也是與使用 smart pointer 類似的原理，以確保 clean up 的 code 一會被 run 到.</description>
		<content:encoded><![CDATA[<p>這也是與使用 smart pointer 類似的原理，以確保 clean up 的 code 一會被 run 到.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jeffhung</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1012/comment-page-1/#comment-128721</link>
		<dc:creator>jeffhung</dc:creator>
		<pubDate>Sat, 17 Jan 2009 02:57:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/articles/jeffhung/1012/#comment-128721</guid>
		<description>&lt;p&gt;Lemon,&lt;/p&gt;
&lt;p&gt;如果在程式裡面任何一點 throw/return/break 了出來，那 &lt;code&gt;g_accounts_mutex.unlock()&lt;/code&gt; 可能會沒被呼叫到，最後輕則導致 dead lock，重則什麼事情都有可能發生。&lt;/p&gt;
&lt;p&gt;利用這種技巧，可以保證一定會 unlock，我們就不用花費心思去確認，所有的執行路徑都有 unlock。&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Lemon,</p>
<p>如果在程式裡面任何一點 throw/return/break 了出來，那 <code>g_accounts_mutex.unlock()</code> 可能會沒被呼叫到，最後輕則導致 dead lock，重則什麼事情都有可能發生。</p>
<p>利用這種技巧，可以保證一定會 unlock，我們就不用花費心思去確認，所有的執行路徑都有 unlock。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lemon</title>
		<link>http://www.jeffhung.net/blog/articles/jeffhung/1012/comment-page-1/#comment-128688</link>
		<dc:creator>Lemon</dc:creator>
		<pubDate>Fri, 16 Jan 2009 17:00:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.jeffhung.net/blog/articles/jeffhung/1012/#comment-128688</guid>
		<description>那個...請教一下:
mutex::guard lock(g_accounts_mutex);
這行, 為什麼不單純的呼叫
g_accounts_mutex.lock();
就好了?

因為目前我理解的只是省掉了呼叫 g_accounts_mutex.unlock();
的步驟而已, 而我以為是可以防止 g_accounts_mutex.lock()
被重覆呼叫.
是不是我理解錯了?</description>
		<content:encoded><![CDATA[<p>那個...請教一下:<br />
mutex::guard lock(g_accounts_mutex);<br />
這行, 為什麼不單純的呼叫<br />
g_accounts_mutex.lock();<br />
就好了?</p>
<p>因為目前我理解的只是省掉了呼叫 g_accounts_mutex.unlock();<br />
的步驟而已, 而我以為是可以防止 g_accounts_mutex.lock()<br />
被重覆呼叫.<br />
是不是我理解錯了?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

