is_lock_free とは

0
yoh @yohhoy

C++11 : Atomic variable : lock_free property : What does it mean? http://t.co/tCEp7qzh 教えて貰ったコレ 最終的にC++標準の文脈でlock freeが何を意味するかに辿り着いて無いようでモヤリ

2012-09-05 20:27:53
yoh @yohhoy

lock free instructionに落ちるよってのはそーなんだけど うーん lockって何よ→threadをblockするかも unblocked thread→有限時間内で進行保証 でもatomic objectを外から見たらその違いって観測出来なくない?

2012-09-05 20:37:00
yoh @yohhoy

アルゴリズムやコンテナとしてのlock freeはまさにSO上での説明通りだと思うし 詳しくもないのでそれ以上は分かんない 一方でatomic::is_lock_freeは単にatomic objectの内部実装≒実行時効率に着目しただけにもみえるんよねぇ

2012-09-05 20:47:41
yoh @yohhoy

逆説的にstd::mutexの内部実装がいわゆるspin lockでも合法だと考えてて この場合はabstract machineからみると内部でspin中=blockedってなるだけなのかしら

2012-09-05 20:55:25
yoh @yohhoy

そーすると lock操作の内部実装がspinベースでも atomic操作の内部実装がlockベースでも 観測出来なくなる → atomic objectのlock free propertyは実装の問題?

2012-09-05 21:00:04
くまぎ @kumagi

@yohhoy Lock-freeというのは、スケジューラに対する進行保証の約束の強度を表しているため、例えユーザーにはLock-freeほげほげと同一のインタフェースを提供していても内部がLock実装ではLock-freeとは呼べません。

2012-09-05 21:12:22
yoh @yohhoy

@kumagi はい その点(内部でlockしたらlock freeといえない)は合意します スケジューラはC++標準の外にあるので「進行保証の強度」という表現がしっくりきました

2012-09-05 21:30:46
くまぎ @kumagi

@yohhoy スケジューラが信頼できない場合(ヘテロジニアスや仮想マシン)に、アルゴリズム全体の特性を含めて設計したいケースでis_lock_freeは大事な機能だと思います。(そんなゴツい実装する日が来るのかは謎)

2012-09-05 21:41:29