忍者ブログ
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
性別:
男性
趣味:
酒など
自己紹介:
ここに書かれていることはフィクションです。
ブログ内検索
アクセス解析
[35] [34] [32] [29] [28] [27] [26] [25] [24] [23] [22
×

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

ある処理をするスレッドを3つ作り、
それを実行させていくといったとき。
 
で、その一連の処理は一つのセットで、
その処理を始めたら処理を走りきらないと、
ほかのスレッドで処理を始めたくないときとか。
 
たとえば、
あるデータの集合。
たくさんあるデータの処理を2つや4つのスレッドで分担すると、
CPUの複数のコアがちゃんとつかえてお得かも。
と考えたときなんか。
 
 
キューから読み込み、読み込んだものを消す。
で、処理する。
その前には当然キューに書き込むわけだけど。
 
 
キューに押し込むデータをまとめて、
キューに書き込んで、なんてしてるとき、
スレッドが切り替わったりなんてして見なさいな。
 
あーもう。
 
ってなるから。
 
 
Cocoaでスレッドセーフなキューがあれば、
私はちょっと幸せになれたんだと思う。
MutableArrayを使えば、キューなんて簡単に実装できるけど、
MutableArrayはスレッドセーフじゃないんですな。
 
MutableArrayを保護しながら使わないといけない。
 
キューにアクセスできるのは一つのスレッドだけで、
ほかのスレッドは終わるまで外で待っていないといけない。
 
トイレの個室には同時に一人までしか入ってはいけないんです。
ある例外を除いて。
 
 
 
トイレに入ったらロックしましょう。
 
 
 
少し話はそれるんだけども、
スレッドを3つ立てて、
その3つのスレッドで5回ログをはく。
 
なんて処理は、結局こんな結果になる。
 
2010-05-31 14:28:54.933 lockTest[4067:3603] ID:1 SPEAK 1
2010-05-31 14:28:54.934 lockTest[4067:3e03] ID:2 SPEAK 1
2010-05-31 14:28:54.930 lockTest[4067:1d03] ID:0 SPEAK 1
2010-05-31 14:28:54.935 lockTest[4067:3603] ID:1 SPEAK 2
2010-05-31 14:28:54.935 lockTest[4067:3e03] ID:2 SPEAK 2
2010-05-31 14:28:54.935 lockTest[4067:1d03] ID:0 SPEAK 2
2010-05-31 14:28:54.936 lockTest[4067:3603] ID:1 SPEAK 3
2010-05-31 14:28:54.936 lockTest[4067:3e03] ID:2 SPEAK 3
2010-05-31 14:28:54.936 lockTest[4067:1d03] ID:0 SPEAK 3
2010-05-31 14:28:54.938 lockTest[4067:3603] ID:1 SPEAK 4
2010-05-31 14:28:54.938 lockTest[4067:3e03] ID:2 SPEAK 4
2010-05-31 14:28:54.938 lockTest[4067:1d03] ID:0 SPEAK 4
2010-05-31 14:28:54.940 lockTest[4067:3603] ID:1 SPEAK 5
2010-05-31 14:28:54.940 lockTest[4067:3e03] ID:2 SPEAK 5
2010-05-31 14:28:54.941 lockTest[4067:1d03] ID:0 SPEAK 5
 
ログはき一回ずつ、仲良く交代している。
あえてトイレでは例えない。
 
ログを5回はききるまで、
スレッドが切り替わるのはいや。
っていったとき、
 
ログをはくfor文に入る前と、
出た後に、
ロックをかける処理と、
ロックを外す処理が必要になる。


 
さてさて。
 
PR
この記事にコメントする
NAME:
TITLE:
color:
MAIL:
URL:
COMMENT:
PASS: Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:


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