スレッドを使ってみる

  • http://sources.redhat.com/pthreads-win32/

Windows環境ではPosixスレッドを直接扱えないので移植用にこういうライブラリがある。これを使ってコンパイルしてみたらDLLを呼び出すようにしてきちんとコンパイルしてみたら通るし、実際に実行もできたりする。ライセンスもLGPLらしいので使いやすいかもしれない。

でも、マルチスレッドを使っていろいろなコンパイラ・ライブラリを使っているうちに、ふとした疑問が浮かんできた。マルチスレッドを使っているにもかかわらず、実態はシングルスレッドなのではないかなと思うときがときどきあるということである。

それは資源を競合するプログラムを実行したのにもかかわらず、ぜんぜん競合しないときがあるからだ。たぶん、移植するようには便利なのかもしれないけれども、やはりマルチスレッドの意味が無くなってしまうから、やっぱりWindows環境では _beginthreadex() を使うのがいいのかもしれない。