@IT『.NETマルチスレッド・プログラミング入門』

@IT の記事.
http://www.atmarkit.co.jp/fdotnet/mthread/mthread01/mthread01_01.html
記事では「並行」と「並列」,「レイテンシ」と「スループット」を区別しているあたりは個人的に好印象です.BBX なんかで「頂点バッファの Lock は遅いと聞いたんですが」とある場合,大抵レイテンシとスループットどっちが遅いのか区別していないみたいですからね.
あと,".NETの"とあるので .NET ならではの部分についても(今後の)解説を期待します.

一方、スレッドはプロセスの内部での話である。プロセスがスレッドを含んでいるという関係になり、1つのプロセスは複数のスレッドを持つことができる。そして複数のスレッドが1プロセス内で実行されることをマルチスレッドと呼んでいる。マルチスレッドは、マルチプロセスと同じようにWindows OSのマルチタスク機能を利用して並行動作する。

.NET の文脈でスレッドというと,CLR が管理する「ソフトスレッド」と OS が管理する「ハードスレッド」の 2 つが存在します.特に「ソフトスレッド」は従来の Windows での描像に縛られないため,「2 つの AppDomain が同じ(ソフト)スレッド上で動く」なんて状況も存在します.また「ソフトスレッド」と「ハードスレッド」のマッピングに関しては,少なくとも CLR 2.0 の拡張機能を利用すればかなり自由にカスタマイズ可能ということです(asin:0735619883).いくつかのソフトスレッドを単一の Fiber で実装するなんてのも可能かもしれません.かなり興味深いジャンルなんですが,入門記事と言うことであんまり突っ込んだことやってくれないかなぁ?