マルチスレッドプログラミング相談室 その5at TECH
マルチスレッドプログラミング相談室 その5 - 暇つぶし2ch294:デフォルトの名無しさん
07/03/04 21:29:48
>>292
確かにそこは例えが悪かったので取り消します。
(PGOのような広域のインライン展開のことを考えていたのですが論旨に合わないようです)
言いたかったのは同期関数の呼び出しのタイミングで
偶然レジスタとメモリの同期が取られているという話ではなく、
メモリバリア実現の属性のひとつとして関数の呼び出し時にレジスタとメモリの同期が
とられるという仕組みが利用されてるということです。
だから、レジスタとメモリの同期以外にCPUキャッシュ間の同期やOoOの調整が必要ならば
その処理が同期関数に含まれていなければならないと考えているわけです。


295:デフォルトの名無しさん
07/03/05 18:53:41
         ____
       /      \
      /  ─    ─\
    /    (●)  (●) \馬鹿ばっか
    |       (__人__)    |
     \      ` ⌒´   /
    ノ           \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

296:デフォルトの名無しさん
07/03/05 22:57:17
volatile旋風スゴス

297:デフォルトの名無しさん
07/03/10 22:35:07
質問です。

while ( count > 1 ){
 pthread_cond_wait( &cond_t, &mutex );
}
この場合、条件変数と呼ばれるものはcountですか?
それともcond_tになるのでしょうか?
また、countのチェックにifは使ってはならない。と言われたのですが、
なぜだか解りません。
上記の部分と、
while (1){
 if( count > 1 ) pthread_cond_wait(ry);
}
は同じだと思うのですが・・・
よろしくお願いします

298:デフォルトの名無しさん
07/03/10 22:51:41
>>297

while (1)
{ 
  if( ! (count > 1) ) break;
  pthread_cond_wait(ry); 
} 
と同じだと思う。

299:デフォルトの名無しさん
07/03/10 23:04:21
>>298
そうでした。すんません

300:デフォルトの名無しさん
07/03/10 23:33:31
> 条件変数と呼ばれるものはcountですか?それともcond_tになるのでしょうか?
条件変数はcond_t。!(count>1)は述語。

> countのチェックにifは使ってはならない。と言われたのですが、
言った本人に聞けばいいと思う。いけないってことは無いと思う。
pthread_mutex_lock(&mutex);
while (!pred(ry))
 pthread_cond_wait(&cond, &mutex);
pthread_mutex_unlock(&mutex);
というのが定型パターンの予感はするんで、
その人にとって奇怪なコーディングするなという意味かもしれん。

301:デフォルトの名無しさん
07/03/11 08:33:14
ありがとうございます。
countは述語っていうのですか。知りませんでした。
>ifでんでん
後でもう一度聞いてみます。

302:デフォルトの名無しさん
07/03/11 11:25:05
でんでんってなんだ。云々(うんぬん)と言いたいのか、わざとボケてるのかどっちだ。

303:デフォルトの名無しさん
07/03/11 12:35:43
>>302
単なる2chのジャーゴンだから気にするな

304:デフォルトの名無しさん
07/03/11 14:17:43
countが述語なんじゃなくて
"count>1"が述語
countは単なる変数

305:301
07/03/11 15:38:51
>>304
"count>1"で、述語。ですか。解りました。
ありがとうございます。

>>でんでん
"うんぬん"で"云々"ですか。初めて知りました
ゆとり年代より一つ上なはずなんだけどゆとりでごめんなさい

306:300
07/03/11 15:43:08
ごめん。!(count>1)でなく、count>1だった。
301に幸あらんことを。

307:デフォルトの名無しさん
07/03/11 15:43:39
俺がかつて1日だけ流行らそうとしてばら撒いてたでんでんが意外な影響を。

308:デフォルトの名無しさん
07/03/11 16:04:43
「云々」を「でんでん」ってことは
「云」を「でん」と読んでるって事だよな。

俺、そもそも「云」という漢字、単独でどう読むか知らないのだが。

309:デフォルトの名無しさん
07/03/11 16:29:44
>>308
「ウン」でしょ。

310:デフォルトの名無しさん
07/03/11 16:37:38
伝が“でん”だからなあ

311:デフォルトの名無しさん
07/03/11 20:45:06
雲が「うん」と読まれることには頓着しないらしい。

312:デフォルトの名無しさん
07/03/11 22:22:20
ワンタン
雲呑

313:デフォルトの名無しさん
07/03/12 00:36:16
うーんぬんむーしむし、かーたつむりー

314:デフォルトの名無しさん
07/03/16 09:25:59
         ____
       /      \
      /  ─    ─\
    /    (●)  (●) \  「テラワロスwwwwwwwうぇうぇwwww」・・・・と
    |       (__人__)    | ________
     \      ` ⌒´   ,/ .| |          |
    ノ           \ | |          |
  /´           カタ.    | |          |
 |    l             カタ  | |          |
 ヽ    -一ー_~、⌒)^),-、   | |_________|
  ヽ ____,ノγ⌒ヽ)ニニ- ̄   | |  |       ____


315:デフォルトの名無しさん
07/03/20 00:12:35
ごめん書籍いいでしょっていわれてるけれど
マルチスレッドの勉強する本をおしえてほしいの

316:デフォルトの名無しさん
07/03/20 00:32:02
マルチスレッドについて本で得られるものは1%もない。
といっては見もふたもないので、もう少し具体的にマルチスレッドで何をしたいの?

OSは?マルチスレッドアプリ?APIがしりたい?それともカーネルの実装(はないよな)?

317:デフォルトの名無しさん
07/03/20 15:54:59
Unix 方面の人は「実践マルチスレッドプログラミング」
Win32の人は「Win32マルチスレッドプログラミング」

当り前のことが当たり前に書かれてるだけで、
別にいいも悪いもないけど。

このあたりに出てくるような概念、問題、手法については常識として理解した上で、
新しい手法やOS/CPU/言語毎のメモリモデルなどについての知識を深めると、
volatile 論議とかで無駄に遊べる。

318:デフォルトの名無しさん
07/03/20 23:15:04
>>315
Java使いなら↓は超オススメ。
URLリンク(www.amazon.co.jp)
邦訳版もあるよ。

319:デフォルトの名無しさん
07/03/21 00:27:18
>>317
素朴な疑問

> Unix 方面の人は「実践マルチスレッドプログラミング」
> Win32の人は「Win32マルチスレッドプログラミング」

この辺を読めば volatile 最強って言い切れるようになるんですか?


320:デフォルトの名無しさん
07/03/21 03:30:37
317をもう一度よく読んだほうがいいんじゃない?

321:デフォルトの名無しさん
07/03/21 04:34:08
自作自演の可能性

322:デフォルトの名無しさん
07/03/21 13:51:09
volatile厨を論破するのはそんなに簡単じゃないよ。

323:デフォルトの名無しさん
07/03/21 15:55:04
NG登録するだけだし

324:デフォルトの名無しさん
07/03/24 10:03:31
Win32の本ってオライリーのやつのことでいいの?

325:デフォルトの名無しさん
07/03/24 15:56:09
>>315
並行プログラミングの原理―プロセス間通信と同期への概念的アプローチ (単行本)

326:デフォルトの名無しさん
07/03/27 14:50:58
          ____
       / \  /\  キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \ volatile厨を論破するのはそんなに簡単じゃないよ。
    |      |r┬-|    |  
     \     `ー'´   /
            ___
       /      \
クスクスッ /ノ  \   u. \ !?
    / (●)  (●)    \
    |   (__人__)    u.   |
     \ u.` ⌒´      /
         ____
       /      \!??
      /  u   ノ  \    クスクスッ
    /      u (●)  \
    |         (__人__)|
     \    u   .` ⌒/



327:デフォルトの名無しさん
07/03/27 22:33:12
Javaのsynchronizedとwaitとnotifyに関する質問なんだが

URLリンク(www.javaworld.jp)
ここの

class Buffer {
private int value;
private boolean isEmpty = true;
public synchronized void putValue(int v) {
while (!isEmpty) {
try {
wait();
} catch (InterruptedException e) { }
}
notifyAll();
isEmpty = false;
value = v;
}
public synchronized int getValue() {
while (isEmpty) {
try {
wait();
} catch (InterruptedException e) { }
}
notifyAll();
isEmpty = true;
return value;
}
}
これがどうして動くのか分からん。
あるスレッドがgetValueに入ってる間は、ほかのスレッドは
getValueにもputValueにも入れないんじゃないのか

328:デフォルトの名無しさん
07/03/27 22:34:13
すまんソースコードが見づらくなってしまった。
リンク先を見てくれ。

329:デフォルトの名無しさん
07/03/27 22:52:21
>>327
前のページで説明されてる。


330:デフォルトの名無しさん
07/03/27 22:53:08
URLリンク(sdc.sun.co.jp)()

の二段落目を理解できない無能?

331:デフォルトの名無しさん
07/03/27 23:05:42
すまんかった。
とんくす

332:デフォルトの名無しさん
07/03/28 08:53:09
          ____
       / \  /\  キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \ の二段落目を理解できない無能?
    |      |r┬-|    |  
     \     `ー'´   /
            ___
       /      \
クスクスッ /ノ  \   u. \ !?
    / (●)  (●)    \
    |   (__人__)    u.   |
     \ u.` ⌒´      /
         ____
       /      \!??
      /  u   ノ  \    クスクスッ
    /      u (●)  \
    |         (__人__)|
     \    u   .` ⌒/



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch