flat7th

memo/20080529

created 2008-05-29 modified 2008-05-29 

マルチスレッドの正しい使い方

リンク備考
コアの数と スレッド数とイベント処理はてなのエントリ
マルチコア時代のサーバ設計についておなじくはてな
wikipedia:ファイバーへえぇ、ファイバーっていうのか

C10Kについて、私と似た意見の記述を見かけたのでメモ。

そうそう、1コアに対しスレッドはせいぜい12個くらいしか効率的に並列化できないんですよね。でも、1スレッドでマルチにイベント処理すると1万くらいどうってことない。

だから、シングルスレッドでマルチ処理するプログラミング技術を習得した上で、少数のワーカースレッドにマルチ処理させるようにプログラムするのが最強。実社会で例えると「少数精鋭」構成ですな。

私は、実体験からそういう直感を得ましたが、公に提示できる実証データを所有してはいません。


リンク先をたどっていて、スレッドvsイベントの議論はとっくに結論がでている というような記述を見かけたが、詳細未読。

IISでのWebサービスが、まさになんとかの一つ覚え的なスレッドの使い方(リクエストごとにスレッド生成)なのだが、これは高性能なCPUを買わせようとする人たちの陰謀(姑息な市場戦略)だと思う。環境保護団体を自称するひとたちはこういうCO2増加にこそ食って掛かってほしい。


「あのウザイ○○をなんとかしてください」の"仲"のひと

C MAGAZINEという雑誌の記事執筆者のなかで、ものすごく評判の悪い人物がいた。某掲示板でも「あのウザイ○○をなんとかしてください」スレッドがたつ有様であった。

かの人物が「プログラミングの禁じ手」という記事を書いた。編集部はその記事を出版した後、Webでも公開していた。

記事は、一見正しいように見えるが、実際には個人的な嗜好や偏見が入り混じった内容だった。いわく、C++ではどんなクラスでも「必ず」デストラクタを仮想にしなければいけない、などと主張していたが、これはC++言語設計者が否定している誤った知識であった(ソース:リップマン C++オブジェクトモデル)。

私とかかわらない誰かが自分のプログラムで心がける程度なら何も問題はないが、一方的な主義をあたかも普遍的な知識と錯覚させる形で広く布教されると、非常に迷惑になる。
実際、以前かかわった某「困ったチャン」も、かの記事の参照を推奨し布教していたため、私は「類は友を呼ぶ」などとひとりごちたものであった。

ふと気になって検索してみたところ、上記記事はヒットしない。どうやら C MAGAZINE のWebページすべてが参照できなくなった模様。

(特に上記記事がWebから消えたことについて)大変好ましいことであると思った。