Visual C++ 2010 その2

昨日に続いてC++のセッションを見てみる
Parallel Programming for C++ Developers in the Next Version of Microsoft Visual Studio
これみたらVC10はVC6以来の大型アップデートってのが実感できた。
もうなんかいろいろ増えて何がなんだか・・・
OSのAPIではなく、言語として並列化が行えるってのがポイントのようですね。
うまくまとめきれないのでごちゃごちゃしたまま書いてみる。

Concurrency Runtime

Cランタイムが並列処理を行うようになる。

Task Parallel Library

C++として「タスク」という概念で並列処理化できるようになる。
例:普通のクイックソート

 void quicksort(int *a, int n){
  if(n <= 1) return;
  int s = partition(a,n);
  quicksort(a,s);
  quicksort(a+s,n-s);
 }

タスクで並列化されたクイックソート

 void quicksort(int *a, int n){
  if(n <= 1) return;
  int s = partition(a,n);
  task_group g;
  g.run([&]{quicksort(a,s)});
  g.run(quicksort(a+s,n-s)});
  g.wait();
 }

Parallel Debugging Tools

IDE側の新機能。
「Multi Stack View」ウィンドウというのがあって、タスクやスレッドのスタックがツリー形式で表示される。
なんかクラス図みたいな感じになってちょっとおもしろい。

Parallel Pattern Library

parrallel_forとかでループが並列化できる

Asynchronous Agents Library

sendとreceiveで非同期処理させるような感じ

Concurrent Containers and Objects

concurrent_vector,concurrent_queueといったvectorが並列appendできるようになった版などが増える

同期プリミティブ

enter_critical, reader_writer,std::mutexといった同期を行う機能が入る