忍者ブログ
natsuの秘密基地です
はまり
はまり一件ごとのお話の流れです
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール
HN:
natsu
性別:
男性
趣味:
酒など
自己紹介:
ここに書かれていることはフィクションです。
ブログ内検索
アクセス解析
[37] [36] [35] [34] [32] [29] [28] [27] [26] [25] [24
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ロックをしたいとき、
どんな方法がとれるのか調べてみたけど、
以下の3つからどれにしようかといったところ。
 
・@synchronized
・POSIX mutex
・spin lock
 
なにも考えずにやりたい場合、
普通は@synchronizedでやればいいんだと思う。
 
POSIXのmutexも特になんも考えなくていいと思う。
 
spin lockはなんか、もっと低レベルの仕組みなんだと思う。
ドライバ書いたりする人はこんなの使うんでしょ。
ちょいと調べる限り、
ロックで待ってる間はビジーループで回るとかなんか書いてあるけど、
最近の実装じゃ、もっとうまいことやるでしょ。
きっと。
ほかのスレッドにCPU渡したり。
 
spin lockは実際に使わないと思うけど、
実験だし使ってみる。
 
 
 
計測計測。
 
 
 
ロックかけて
インクリメント
ロック外す
 
を10000回まわしてみる。
 
 
インクリメントすらスレッドセーフではない世の中。
何を信じればいいのか。
 
阿弥陀様を信じればいいと思うよ。
 
 
 
さて。計測計測。
 
 
 
一応すべての方法で、ロックがうまいこといくのは確認。
 
ロックなし
大体 0.035ms
 
@synchronized
大体1.84ms
 
POSIX mutex
大体0.65ms
 
spin lock
大体0.29ms
 
10000回連続でロックとアンロックをやってるので、
なんとかテクノロジ的なもので、
2回目以降は速くなるのかもしれないけど。
 
一回あたりのロックは
@synchronizedでも計測する意味が無いレベルだと思う。
 
とりあえず、
普通に使う分ではどれでも問題ない気はした。
すくなし、
@synchronizedなんて遅くて使えないよー。
なんてことは、いわないと思う。
 
PR
この記事にコメントする
NAME:
TITLE:
color:
MAIL:
URL:
COMMENT:
PASS: Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:


Copyright (C) 2010 NEST,
All right Resieved.*Powered by ニンジャブログ *Designed by にこるん  / 忍者ブログ / [PR]