[Armadillo:06677] Re: Armadillo-300 にて、タイマーと select を使うには?
Yasushi SHOJI
email@hidden
2011年 1月 28日 (金) 17:24:08 JST
At Fri, 28 Jan 2011 16:23:19 +0900,
Takenoshita Koyo wrote:
>
> >> 私なりに考えた方法として、pthread_createにて、
> >> スレッドを作成して、スレッドにてタイマの代わりを
> >> させようかと思ったのですが、
> >> 何か問題や気をつける点はありますでしょうか?
>
> pthreadに関しては、それだけを専門に扱った書籍がいくつかあります。
> http://www.amazon.co.jp/dp/4900900664
> http://www.amazon.co.jp/dp/4894710978
>
> 要は、それだけ扱うのが難しい道具です。
>
> 先のメールで紹介したmemologueというブログでも、マルチスレッドを
> 扱う際に注意すべき事について色々書いてくれています。
> http://d.hatena.ne.jp/yupo5656/
>
> こういった事を気にせずにコードを書いていると、簡単にデッドロック
> したり、再現性の低い厄介なバグが発生したりします。(経験者は語る。)
そういえば、Bjarne Stroustrup も 「C++ に thread を標準的に扱う方法が入っ
ていないのは、今のままでは難しいからだ」ということを言っていましたね。
「OS が提供している 生 Thread といくつかの lock 機構だけでプログラムす
るのは馬鹿げている(超意訳)」とか。
http://video.google.com/videoplay?docid=-3478907067117491758
もちろん、C++はシステム開発用の言語なので OS が提供している機能は使えま
すが、erlang[1]や google go[2]のように、CSP(Communicating sequential
processes[3])をベースにしたプリミティブとして提供しているわけでも、
Grand Central Dispatch[4] やOpenMP[5]のようなものを提供しているわけでも
ないです。C もそういう意味では、同じ状況です。
[1]:http://en.wikipedia.org/wiki/Erlang_%28programming_language%29#Concurrency_and_distribution_orientation
[2]:http://golang.org/doc/go_faq.html#csp
[3]:http://en.wikipedia.org/wiki/Communicating_Sequential_Processes
[4]:http://en.wikipedia.org/wiki/Grand_Central_Dispatch
[5]:http://en.wikipedia.org/wiki/OpenMP
--
yashi
armadillo メーリングリストの案内