2013/02/13

Recent entries from same category

  1. RapidJSON や simdjson よりも速いC言語から使えるJSONライブラリ「yyjson」
  2. コメントも扱える高機能な C++ 向け JSON パーサ「jsoncpp」
  3. C++ で flask ライクなウェブサーバ「clask」書いた。
  4. C++ 用 SQLite3 ORM 「sqlite_orm」が便利。
  5. zsh で PATH に相対パスを含んだ場合にコマンドが補完できないのは意図的かどうか。

Boost 1.53 がリリースされたので入れた。
新しく追加されたライブラリ。
  • Atomic: C++11-style atomic<> from Helge Bahmann, maintained by Tim Blechmann.
  • Coroutine: Coroutine library, from Oliver Kowalke.
  • Lockfree: Lockfree data structures, from Tim Blechmann.
  • Multiprecision: Extended precision arithmetic types for floating point, integer and rational arithmetic from John Maddock and Christopher Kormanyos.
  • Odeint: Solving ordinary differential equations, from Karsten Ahnert and Mario Mulansky.
非同期関連が増えて面白くなってきた。
試しに boost::coroutine 使おうと思ったら boost::context の make_fcontext と jump_fcontext がアセンブラでシンボルエクスポートされてなさげ。普段は masm にパスを通しているのだけど、どうやら VC 付属の ml じゃないと駄目らしい。
気付くまでハマった。。。

ようやく動くようになった。 #include <boost/coroutine/coroutine.hpp>

int
main(){
  typedef boost::coroutines::coroutine<std::string()> ctype;

  ctype
  c([] (ctype::caller_type &yeild) {
    for (int i = 0; i < 10; i++){
      yeild(i % 2 == 0 ? "フル" : "チン\n");
    }
  });

  while(c) {
    std::cout << c.get();
    c();
  }

  return 0;
}
実行結果 フルチン
フルチン
フルチン
フルチン
フルチン
ブーストフルーチンでは無いので注意。
Posted at by