タグ

boostに関するkyouzontのブックマーク (27)

  • 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 : スレッドの生成と実行
  • int/doubleを文字列に変換する際の速度など - y_tagの日記

    C++でintやdoubleなどの数を文字列(charの配列もしくはstd::string)にしたい時、もしくはその逆で文字列をintやdoubleにしたい時がある。一般的にそのような処理はファイル入出力などと合わせて行われるため、それほど速度を気にすることはなく、むしろ安全な処理を選択することが多いと思う。 そんなわけで、これまではC++のstreamやboost::lexical_castを使っていたのだけれど、これらの時間がかかる処理より速いであろうsnprintfやatoi/strtol、strtodなどとどれほど差があるのかを調べてみた。 以下がざっと書いた速度計測結果。実行は仮想マシン(VMWare)上のUbuntu 11.10で行った。何度か測定したところ細かい誤差はあったが、ある程度の傾向は見えたように思う。単純にintをループ内でインクリメンタルする処理を比較対象とした。

    int/doubleを文字列に変換する際の速度など - y_tagの日記
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • boost Asio 概要

    Boost.Asio概要 翻訳は自分の勉強のために行います.とりあえず意味がわかればいいやという感じで進めます.訳せないところは飛ばします. そういった意味で不正確な訳なことをご了承下さい. http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/overview.html 1. Boost.Asioの原理原則 大部分のプログラムは、外の世界と何らかの方法でやりとりをします。それは、ファイルを通じて、ネットワークを通じて、シリアルケーブルを通じて、もしくは、コンソールを通じて、です。しばしば、ネットワークの場合、I/O命令の完了までに長い時間がかかる場合があります。これは、アプリケーションの開発者にとって、とりわけ挑戦となります。 Boost.Asioはこれらの長い実行時間のかかる操作を扱います。スレッドや明示的なロックなしにです

  • Boost.Asioまとめ(1)::io_service - yutopp's blog

    Boost Advent Calndar 2011に恐縮ですが参加させて頂きました。15日目です。 最初はBoost.Asioについてまとめるぞーと意気込んでいたものの変に長くなってしまったのでBoost.Asioの中のio_serviceに絞ったためこんなタイトルに成り申した。 Boost.Asioとは 主にネットワークのI/Oのような時間のかかってしまう処理を非同期的かつ簡潔に扱えるようにした便利なライブラリです。 ネットワークを中心に、シリアルポート、タイマー、シグナルのハンドリングなども扱えます。 と、いうわけでio_serviceです。 Windows環境にてVC++10、Boost1.48.0を用いています。 io_service 全てはこのクラスに始まり、このクラスに終わります。 各OSの提供するI/O制御への橋渡しをしてくれるもので、Asioの提供するIOサービス(dead

    Boost.Asioまとめ(1)::io_service - yutopp's blog
  • boost::asioライブラリに複数の io_service::run の正しい呼び出し方 - 雷鳴の日記

    幾日の前に、私はboost::asioを遊んでた。こういうコードを書いた #include #include #include #include using std::cout; using std::endl; using namespace boost; using namespace boost::asio; io_service ioserv; mutex m; volatile int c = 0; void add() { lock_guard g(m); ++c; } int main() { thread t1(bind(&io_service::run, ref(ioserv))); thread t2(bind(&io_service::run, ref(ioserv))); for(int i = 0; i < 655360; ++i) ioserv.post(&ad

    boost::asioライブラリに複数の io_service::run の正しい呼び出し方 - 雷鳴の日記
    kyouzont
    kyouzont 2012/04/29
    UltraMonkey-L7ではpoll()を使っているが、この問題は大丈夫だろうか。
  • [C++]楽々TCPサーバ

    塵も積もれば山 目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 216 記事 - 0 コメント - 7622 トラックバック - 60 ニュース C++とかC#とか数学ネタを投下していく予定です。 [その他のページ] 日々の四方山話を綴った日記出水の日記帳 書庫 2011年12月 (2) 2011年8月 (1) 2011年7月 (1) 2011年1月 (2) 2010年12月 (2) 2010年11月 (2) 2010年10月 (5) 2010年8月 (1) 2010年7月 (1) 2010年5月 (1) 2010年4月 (2) 2010年2月 (8) 2010年1月 (2) 2009年12月 (2) 2009年10月 (5) 2009年9月 (3) 2009年8月 (3) 2009年7月 (5) 2009年6月 (12) 2009年5月 (6) 2009年4

  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
    kyouzont
    kyouzont 2012/04/29
    scoped_lockについて。
  • [Boost-users] [asio] async_read and 100% CPU

    kyouzont
    kyouzont 2012/03/13
    UltraMonkey-L7で発生している問題と関わりがあるか?
  • Boost.Regexを使ってみる(1)

    今回はMinGW環境下でBoost.Regexを使ってみます。 Boost.Regexはテンプレートだけではなく、ライブラリを必要としますのでリンクでregexのライブラリをリンクする必要があります。 コンパイルとリンク ヘッダファイルのインクルード Boost.Regex を利用する場合は、boost/regex.hpp をインクルードする必要があります。 ソースに以下のように記述します。 #include <boost/regex.hpp> インクルードパスの設定 コンパイルする際、インクルードパスを設定します。 「Boostのインストール」で説明した方法でインストールした場合、 インストール先のフォルダ下のinclude\boost-1_33_1\boost の下にヘッダファイルが生成されています。 Boostのヘッダファイルの #include の記述は #include <boo

  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    kyouzont
    kyouzont 2011/12/27
    std::find_ifの使い方とあわせて書いてあるので参考になります
  • テスト入門

    ユニットテストフレームワーク事始め 今日は特別な日である。今日から新しい生活が始まる。 脂肪分の多い事をべるのはやめにして、フィットネスクラブに通い始め...今日から 今書いているプログラムのテストをしよう。プログラムの最後の行を書き終わったら テストができる。いやまてよ、コーディングしながらテストを書くほうがいい考えだ。 次回からはコーディング前の設計段階でテストを書くことにしよう。テストの書き方 についてのはたくさん読んできた。ユニットテストのフレームワークは手元にある。 新しいクラスのアイディアも浮かんだ。さあはじめよう! それでは、長さを持った、変更不可能なCの文字バッファ をカプセル化するconst_stringを使って説明しようと思う。推測では、この 文字列クラスはメモリは割り当てず、あらかじめ割り当てられた文字列バッファへの 使いやすい読み込み専用アクセスを提供する。c

  • いやなブログ: STL のバインダとリファレンスへのリファレンス問題

    STL のバインダとリファレンスへのリファレンス問題 STL に含まれる bind1st と bind2nd は for_each や find などの関数と組み合わせて使うと便利です。しかしながら、リファレンス (参照) を引数に取る関数の引数をバインドすることはできないので注意が必要です。 注意が必要ですと言いつつ、自分がこの問題を知らずにはまりました。次のようなコードで問題は起きます。 #include <algorithm> #include <functional> #include <iostream> #include <string> #include <vector> using namespace std; void print(const string& s1, const string& s2) { cout << s1 << ": " << s2 << endl;

  • 正規表現ライブラリ boost::xpressive を使う - 日記を書く [・w・] はやみずさん

    kinabaさんとこでboost::xpressiveを知ったので、早速ネットワークプログラミングのほうで使ってみたらなかなかよい感じ。 Boost.Regex++ と比較して、ヘッダのみで構成されている(ライブラリのリンクが不要)という点が気楽に使う向きにはありがたいのですが、何よりイカれているすばらしいのはテンプレートと演算子オーバーロードの黒魔術によって、 目的のパターンマッチを行う有限状態機械を、C++ ソースのコンパイル時に生成してしまう静的正規表現なのです。 Boost.Xpressive, 初音ミクの10倍高い機械に「GO MY WAY!!」を歌わせてみた(おまけつき) - underscore.jp/diary(2007-09-27) すげぇ。 以下使う方法を適当に。 はじめに Ubuntuな人は apt-get install libboost-* でおk。必要ないパッケ

    正規表現ライブラリ boost::xpressive を使う - 日記を書く [・w・] はやみずさん
    kyouzont
    kyouzont 2011/10/29
    boostの静的正規表現"set"を使う際に、std名前空間をusingしていると衝突がおこるので、その場合はboost::regex::setとすること。
  • Free Dynamic DNS(DDNS) by POP3,IMAP4,FTP,HTTP-BASIC for Home Server, VPS | MyDNS.JP

  • 逆引きリファレンス - boostjp

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • Boost.Asio 名前解決 - Faith and Brave - C++で遊ぼう

    Boost.Asioでは、resolverというクラスを使用することにより、google.comのような名前から、IPアドレスに変換することができます。 ip::tcp::resolver resolver(io_service); ip::tcp::resolver::query query("google.com", "http"); resolver.async_resolve(query, on_resolve);以下サンプル #include <boost/asio.hpp> #include <boost/bind.hpp> #include <iostream> namespace asio = boost::asio; namespace ip = asio::ip; class Client { asio::io_service& io_service_; ip::tcp

    Boost.Asio 名前解決 - Faith and Brave - C++で遊ぼう
    kyouzont
    kyouzont 2011/10/23
    resolver,queryなどについて