Boost.勉強会#5 名古屋に行ってきました.Boost.勉強会が「Boost があるかもしれない勉強会になりつつある」と言う噂もちらほら聞きましたが,非常に濃い内容で楽しかったです.発表された方,関係者の方々いつもお疲れ様です.
以下,印象に残ったものをメモ.発表資料ほか関連リンクは,https://sites.google.com/site/boostjp/study_meeting/study5 にあります.
春のLock-Free祭り (@kumagi, id:kumagi)
Lock-freeとWait-freeアルゴリズム - Wikipedia意義
マルチスレッドプログラミングに置いて古典的な手法は、共有リソースにアクセスするときはロックをかけることである。ミューテックスやセマフォといった排他制御はソースコードのある領域を同時に実行しないようにし、それゆえ、共有メモリの構造を破壊しないようにする。もし、他のスレッドが事前に獲得したロックをあるスレッドが獲得しようとするときは、ロックが解放されるまでスレッドの動作は停止する。
スレッドが停止することは多くの理由で望ましくない。まず、スレッドがブロックされている間は、何も出来ない。そして、スレッドが優先順位の高い処理やリアルタイム処理を行っているならば、そのスレッドを停止することは望ましくない。また、複数のリソースにロックをかけることは、デッドロック、ライブロック、優先順位の逆転を起こすことがある。さらに、ロックを使うには、並列処理の機会を減らす粒度の荒いロックを選択するか、バグを生みやすく注意して設計しないといけない粒度の細かいロックを選択するかというトレードオフ問題を生む。
近年の CPU のマルチコア化にともなって,スレッド間でデータを共有する際に「ロックする事」がボトルネックとして無視できなくなりつつあるようです.そう言った問題に対する解決策として,ロックせずにスレッド間でデータ共有できる(異なるスレッドからアクセスがあってもデータ構造が壊れない)アルゴリズムが提案・研究されているそうです.
発表では,Lock-free アルゴリズムを適用したスタック,キュー,ハッシュマップ辺りに触れられていました.ハッシュマップ辺りからだんだんと付いていけなくなったのですがw,STL 辺りもコレクションクラスの次世代の実装としてこう言った事を考慮されながら行われるようになるのかなぁとか思いながら聞いていました.
Boost.Pythonの有能性 (@fate_fox, fatefox)
C++ と Python の橋渡しをするためのライブラリ.C++ との橋渡しと言うと SWIG 辺りを思い浮かべるのですが,Python はいち早く Boost に採用されています.その他だと id:moriyoshi さんが Boost.PHP と言うライブラリを実装していたのを思い出しました.
C++ と何かの橋渡しをする経験は自分の場合だと ns-2 のシミュレーションプログラム(C++ と tcl)を書く際に使ったくらいなので,なかなか積極的に利用する場面をイメージできないのですが,ユーザスクリプトが書けるようになると便利になるアプリケーションは数多く存在しているはずなので,できるだけ頑張ってイメージしていければなと思いました.
Boost.statechart / Boost.MSM (@PG_kura, id:kura-replace)
状態遷移を表現するためのライブラリ.これも利用用途をイメージできないでいたのですが,最後の「GUI の動きを状態遷移を用いて表現してテストしやすくする」と言う話に凄く興味を惹かれました.一度真面目に考えてみようと思ったお話.
C++0x総復習 (@wraith13, id:wraith13)
C++0x の FDIS をざーっ紹介してくれたセッション.資料が 160ページを超えてると言う力作で,C++0x のチュートリアルとして凄く有用な資料でした.分かりやすく書かれているので,C++er な人は一度目を通してみると良いのではと思います.
懇親会
懇親会会場にもプロジェクタがあってなかなか濃い展開になっていました.取り合えず名古屋怖いってのは分かりましたzzZ 懇親会でしゃべっていると「ブログ読んでますよ」と言ってもらえた事があって,これは素直に嬉しかったです.このブログは気が向かないと C++ のネタを書かないと言うなんちゃって C++ ブログですが,まぁ末永くお付き合いして頂ければと思いますw
ブログに関しては,ちょっと話題になっていた static おじさんの例みたいに「飯の種(金を生むもの)を無料で公開する奴は馬鹿」みたいな記事をぽつぽつ見かけたりしますが,個人的には何だかんだで「ブログを続けておいて良かった」と思える事には度々遭遇します.「情けは人の為ならず」と言う言葉もあるように,巡り巡って自分にプラスになる事もたくさんあったりするので,そう言った記事にめげずにどんどん情報発信されるような流れになれば良いなぁと考えたりしました.