#boostjp thread::inturrupt()はなくてもプログラムを書くことはできるが、condition::waitなどでブロックしていると条件述語を満たさない限り永久にブロックが外れない。
2010-05-08 23:38:08Tutorial読んでなんとなくトランザクションメモリ分かった気がする。従来の手法で不可分な手続きをとりあえず並行に動かして不味かったら巻き戻すのか。 #boostjp
2010-05-08 23:38:59#boostjp thread.interrupt()をコールしておくと、該当スレッドがインタラプトポイントに到達した時点で特定の例外が飛ぶ。interrupt()受付可能かどうかは動的に切り替え可能。インタラプトポイントとなるメンバ関数はBoostのリファレンス参照。
2010-05-08 23:43:08パフォーマンスはチェックのコストと変数の相互依存性の強さ、並列の度合い次第かな。直列化した処理より速いことも遅いこともありえると思う。 #boostjp
2010-05-08 23:48:13#boostjp condition::wait()で待つ場合はインタラプトされることを考慮してコードを書く必要がある。(すでにインタラプト済みの状態からインタラプトステータスを元に戻したい場合はどうするんでそ?)
2010-05-08 23:49:31#boostjp Stack Overflowにthreadのintteruptionの話がでてる。だいたい今日話した内容と同じ http://stackoverflow.com/questions/2790346/c0x-thread-interruption
2010-05-09 00:19:25#boostjp オフ会後に@yhamigakiさんと話してたこと。マルチスレッドでのiostreamでのログ出力では、たとえcout/fstreamがスレッドセーフだとしてもマニピュレータが絡むと10進で出力するはずが16進で出力されてしまったりする
2010-05-09 00:23:19#boostjp Boost.Logがマクロになってるのは、マニピュレータの状態を管理するための変数を内部で作ってるからで、その式内においてはスレッドセーフにすることができる。
2010-05-09 00:24:36間違えた。Boost.Loggingでした。Boost.Logは別物。 RT @cpp_akira: #boostjp Boost.Logがマクロになってるのは、~
2010-05-09 00:31:55