2012-09-16 (日)
肉食べた.
Visual Studio 2012はMetroを意識したっぽい平坦なUIで,慣れるまでは落ち着かないですね.
そういえばinitializer listもないのか.C++11対応もう少しがんばってくれると期待していたのでちょっと残念.thread,mutex,futureあたりが追加されてるのは良かった.
*future使ってみる
async良い感じ.
#include <iostream> #include <future> using namespace std; int main() { int a[] = { 1, 2, 3, 4, 5, 6, 7 }; auto f1 = async([&]{ long r = 0; for (const auto &n : a) { r += n; cout << "add " << n << endl; std::this_thread::sleep_for(std::chrono::milliseconds(50)); } return r; }); auto f2 = async([&]{ long r = 1; for (const auto &n : a) { r *= n; cout << "mul " << n << endl; std::this_thread::sleep_for(std::chrono::milliseconds(50)); } return r; }); cout << "f1:" << f1.get() << " f2:" << f2.get() << endl; return 0; }
排他処理もstd::mutexあるので良いですね.
しかし,
std::this_thread::sleep_for(std::chrono::milliseconds(50));
これ長すぎる…….
*GC周り(N2670)
現時点では役に立たないのであんまり他のコンパイラが対応してないですが,リストに入っていたので確認してみる.
#include <iostream> #include <memory> using namespace std; int main() { auto ps = get_pointer_safety(); if (ps == pointer_safety::relaxed) { cout << "relaxed" << endl; } int *a = new int; declare_reachable(a); undeclare_reachable(a); delete a; return 0; }
relaxedでした.declare_reachableとかは空っぽ.