[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

c++とBoost.Asionに関するy_uukiのブックマーク (1)

  • Boost.Asio 送受信バッファをメンバ変数に持たないためのイディオム - Faith and Brave - C++で遊ぼう

    Boost.Asioで非同期通信を書いていると、送受信のためのバッファをメンバ変数に持つ必要が出てきて、局所化が難しい場合があります。 この解決策として、以下のようなイディオムを使うことで送受信バッファをローカル変数化することができます: 送受信バッファをshared_ptrで包む async_read, async_writeにshared_ptrを間接参照したバッファを渡す このままでは送受信関数のスコープを抜けた時点でshared_ptrが消えてしまう 送受信のハンドラにshared_ptrのバッファをbindする io_serviceは内部でハンドラ関数のキューをメンバ変数として管理してるので、bindされたshared_ptrのバッファはハンドラの呼び出しが終了するまで寿命が尽きない つまり、メンバ変数の管理を、部分適用されたハンドラとio_serviceで隠してしまうのです。

    Boost.Asio 送受信バッファをメンバ変数に持たないためのイディオム - Faith and Brave - C++で遊ぼう
  • 1