[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 10926] Re: Doug Lea 本



村山@netgeneです.
とりあえずここだけ.

> 「マルチスレッドプログラミング」というと、何を扱っているべきなの
> でしょうか? 当てが外れるというからには何かしら期待している内容
> があるのでしょうね。期待とずれていたからでしょうか?

以下がマルチスレッドと並列プログラミングの違いを表していると思います.

> 普段パフォーマンスをあげるためにマルチスレッドを使うという設計選択
> をしていないので、あまり意識していませんでした。通信で送受信を別々
> にして、それぞれの処理の記述をシンプルにする、といった局面でマルチ
> スレッドを使用しています。

「それぞれの処理の記述をシンプルにする(けど処理速度は微妙に遅くなる)」
はマルチスレッドの範疇ではあっても,普通は並列処理の範疇には入らない.
「マルチスレッド」は「設計モデル」とかの世界で議論するのも可能でしょう.

これに対し並列処理の主題は「並列マシンを使った高速化」です.よって
パフォーマンスの向上が第一の課題になります.逐次より遅くなったのでは,
高価な並列マシンを使う意味がないんですよ.だから実装のことも無視できない
し,ハードウエアのことも知っていないと「並列プログラミング」は難しいです.
#といっても基本は「同期と疑似共有を減らせ」くらいですけどね.

また,上の例のような場合では,動作が変化するといっても通信に
成功するか失敗するか,くらいの違いしかないですよね?

並列プログラムでは,いわば通信で得られるデータの内容までが変化
するような物なんですよ.しかも微妙なタイミングの影響も受ける.
だから同期処理を変化させると受け取るデータも変わるし,そのデータを
元に行う条件分岐も全部変わる.だから扱いが難しい.