タグ

multi threadとboostに関するkyouzontのブックマーク (6)

  • Boost.Asio postとdispatchの違い - Faith and Brave - C++で遊ぼう

    Boost.Asioのio_serviceには、post()とdispatch()というほぼ同じことをする関数が用意されています。 以下のブログでわかりやすく解説されていたので、それを見ていくことにします。 To post or to dispatch? - This Thread まず、io_serviceを複数スレッドで動作させます。 それと、最初にメインスレッドのIDを出力しておきます。 std::cout << boost::this_thread::get_id() << std::endl; asio::io_service io_service; asio::io_service::work work(io_service); boost::thread_group group; const int count = 3; for (int i = 0; i < count;

    Boost.Asio postとdispatchの違い - Faith and Brave - C++で遊ぼう
  • boost.asioの非同期IOのしくみ - ぬうぱんの備忘録

    なにがあった 一個前のエントリで同期通信のブロッキングがウンタラカンタラって言って結局非同期通信することに落ち着いたので、非同期通信がどうなってるのかをメモ 基的な流れとか おおよそ次の3ステップ メインスレッドでio_serviceに送受信バッファとハンドラを登録(post) io_serviceは登録されたハンドラを処理する(dispatch) 送受信が完了すると登録したハンドラが呼び出される 補足すると メインスレッドから仕事を投げて子スレッドで仕事を処理するイメージ。 2はio_service::run()内のメッセージループで行われる。 送信にしても受信にしてもハンドラが呼び出されるまでは送受信が終了していないという事なので、バッファを有効にしておく必要がある。 メッセージループの開始と終了 開始と終了が割と面倒。というのも ハンドラを処理するメッセージループはio_servi

    boost.asioの非同期IOのしくみ - ぬうぱんの備忘録
  • NO!と言えるようになりたい

    foo.m_bar と書くべきところを,foo.bar と書いていたら,foo.m_bar なんじゃないのと指摘してくれた.なんだこれは.たまげたなあ.凄い(確信). こんなかんじで書いていると, class ssl_info { public: ptr_cdpi_ssl m_client; }; void func() { get_ssl_obj(info.client, b1); } このようにエラーを出すのだ. /home/ytakano/program/c/catenaccio_dpi/src/cdpi_mongo.cpp:394:22: error: no member named 'client' in 'my_event_listener::ssl_info'; did you mean 'm_client'? get_ssl_obj(info.client, b1); ^~

    NO!と言えるようになりたい
  • C++, boost::thread : スレッドの生成と実行

    C/C++でスレッドを扱う場合は、プラットフォームによって使用するライブラリが違います。 Windows なら Windows API の thread で、 UNIX や Linux 系ならば pthread ライブラリ等を使用します。プラットフォーム依存するコードは可搬性に難があり、解決策の1つとしてプリコンパイルで依存部分をプラットフォームに合わせたライブラリを選択してコンパイルする方法があります。 boost ライブラリの boost::thread は、上のような処理をラップして共通のインターフェイスとして実装されています。 boost/thread.hppの一部 #if defined(BOOST_THREAD_PLATFORM_WIN32) #include <boost/thread/win32/thread.hpp> #elif defined(BOOST_THREAD_

    C++, boost::thread : スレッドの生成と実行
  • C++, boost::thread : スレッドの同期と排他制御 – mutex、conditionクラス

    複数のスレッドから1つの変数にアクセスする際、システム側のスレッドスケジューリング次第で、予期せぬ書き換えが起こってしまう場合があります。その為、ある1つのスレッドが変数にアクセスしている際は他のスレッドをブロックする排他制御やスレッドの同期を行う必要があります。C++Javaのsynchronizedメソッド/ブロックと同じような記法でクリティカルセクションを実装する方法の1つにboost::threadライブラリのmutexとconditionクラスがあります。 mutex クラスの使い方 スレッドの排他制御を実現できます。具体的な使い方は、mutexインスタンスをmutex::scoped_lockクラスのコンストラクタの引数に指定し、そのインスタンスを取得することでロックをかけられます。あるスレッドが上の処理を以ってmutexインスタンスにロックをかけた場合、その他のスレッドは再

    C++, boost::thread : スレッドの同期と排他制御 – mutex、conditionクラス
  • Examples - 1.47.0

    kyouzont
    kyouzont 2011/07/19
    UltraMonkey-l7 V3の参考に。
  • 1