<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/salarypg66/">
    <title>salarypg66 @ ウィキ</title>
    <link>http://w.atwiki.jp/salarypg66/</link>
    <atom:link href="https://w.atwiki.jp/salarypg66/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>salarypg66 @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2007-02-22T10:25:34+09:00</dc:date>
    <utime>1172107534</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/salarypg66/pages/7.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/salarypg66/pages/5.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/salarypg66/pages/4.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/salarypg66/pages/7.html">
    <title>C++で書いてみるてすと。</title>
    <link>https://w.atwiki.jp/salarypg66/pages/7.html</link>
    <description>
      *templateで自動lock/unlockのてすと
**解説
コンストラクタ/デストラクタをつかって、mutexなど同期プリミティブのlock/unlockをブロックの突入/脱出で自動的にやってみるテスト。

MFCにも似たようなのがあったが、method が仮想化されていて組み込みにはruntimeコストが機能のわりにはちょっと大げさな気がする。継承+仮想関数に代えてtemplate使えば、同期プリミティブをmutexやsemaphore, spinlockと色々選択できて、なおかつbuildtimeに解決しているのでruntimeコストは大げさにならない。 inline展開を期待して、普通にpthread_mutex_lock(),pthread_mutex_unlock()を使うのと変わらんだろ。 (と思う)
*コード
 #include &lt;pthread.h&gt;
 
 template&lt;typename lock_type&gt;
 class auto_lock {
 public:
   auto_lock(lock_type* lockref)
     : _lockref(lockref) { _lockref-&gt;lock(); }
   ~auto_lock()
     { _lockref-&gt;unlock(); }
 private:
   lock_type* _lockref;
 
   auto_lock();
   auto_lock(const auto_lock&amp;);
   auto_lock&amp; operator=(const auto_lock&amp;);
   bool operator==(const auto_lock&amp;);
 };
 
 class mutex
 {
 public:
   mutex()
     { posix_mutex = PTHREAD_MUTEX_INITIALIZER; }
   ~mutex()
     { pthread_mutex_destroy(&amp;posix_mutex); }
   void lock()
     { pthread_mutex_lock(&amp;posix_mutex); }
   void unlock()    </description>
    <dc:date>2007-02-22T10:25:34+09:00</dc:date>
    <utime>1172107534</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/salarypg66/pages/5.html">
    <title>サイド</title>
    <link>https://w.atwiki.jp/salarypg66/pages/5.html</link>
    <description>
      *更新履歴
#recent()

*閑古鳥カウンター
-Total: &amp;counter()
-Yesterday: &amp;counter(yesterday)
-Today: &amp;counter(today)    </description>
    <dc:date>2007-02-22T02:10:37+09:00</dc:date>
    <utime>1172077837</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/salarypg66/pages/4.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/salarypg66/pages/4.html</link>
    <description>
      *66式サラリーPGのコード置き場

よく来たな、まあ座れ。    </description>
    <dc:date>2007-02-22T02:04:31+09:00</dc:date>
    <utime>1172077471</utime>
  </item>
  </rdf:RDF>
