2013/02/13

Recent entries from same category

  1. sudo の特権昇格バグはなぜ起こったのか
  2. mongoose ウェブサーバと TensorFlow Lite を使った Object Detection API サーバを書いた。
  3. C++ な WebServer 実装 crow と TensorFlow Lite を使って Object Detection の API サーバを書いた。
  4. MRuby の TensorFlow Lite バインディングを書いた。
  5. flatten() に再帰は必要ない

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 | Edit


blog comments powered by Disqus