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
同期プリミティブ
enter_critical, reader_writer,std::mutexといった同期を行う機能が入る