タグ

ブックマーク / qiita.com/YukiMiyatake (5)

  • boost.asioのタイムアウト処理を綺麗に書く方法教えて! - Qiita

    はじめに boost.Asioでは、非同期処理のタイムアウト処理を当然行うことが出来るが 一般的なソケットのような、関数にタイムアウト時間を設定するような簡易な方法ではない 非同期処理とは別に、タイマーWaitを非同期で書き、非同期処理が終了すればタイマーをキャンセルし タイマーが先に来れば 非同期処理をキャンセルしタイムアウト処理を行う という 冗長な処理が必要である それを、どのようにラップすればきれいに書けるのか?という話 まずはベタに書いてみる // タイムアウトを設定 deadline_timer.expires_from_now( boost::posix_time::milliseconds(timeout_ms)); deadline_timer.async_wait( [=](const boost::system::error_code &ec) { // タイムアウト

    boost.asioのタイムアウト処理を綺麗に書く方法教えて! - Qiita
  • boost.Asioを半年使っわかったこと - Qiita

    C++ Advent Calendar 2015も21日目 もうすぐ メリー・クリスマスですね。 昨日は Iさんの C++ AMPでGPGPU!でした わたしは残念ながらDirectX11が使えるPCを持っていないので AMPは試せないのですが GPGPUは楽しいですね わたしは、boost.asioのまとめです。 はじめに なぜ boost.Asioが必要だったか お仕事の関係で、お客さんにC++で高速なステートフルサーバを作って欲しい C++で! という要望が来たので。 boostに頼る理由 C++11、14 と、標準ライブラリが増え、threadも使えるようになった が、未だネットワーク通信関連は標準ライブラリになっていないため boost.Asioを採用した boost.Asioはネットワークに特化したライブラリではなく、非同期I/Oのライブラリで タイマー、ファイルの非同期等、色

    boost.Asioを半年使っわかったこと - Qiita
  • これからC++11を学ぶ君に。生ポとおさらば unique_ptr編 - Qiita

    void hoge(){ char *p = new char[100]; // ここで例外発生したら pはリークしますよ! delete p; } よくある、みつけにくいメモリリークですよね。 ちゃんと try/catch でかこみ finalizeで解放し、例外をthrowし直さないとダメですね 面倒だし、無駄な例外処理が必要になり速度的にも あれですよね。 まずは auto_ptr STLにはauto_ptrというものがあり、スマートポインタとして使われてましたが auto_ptrは deprecated (非推奨、削除予定)なので、 unique_ptr を使いましょう unique_ptrは、昔 boost::scoped_ptrって呼ばれてたやつですね。 ってことで、auto_ptr がダメな理由 #include <iostream> #include <string> #i

    これからC++11を学ぶ君に。生ポとおさらば unique_ptr編 - Qiita
  • githubでC++やC#を検索する方法 - Qiita

    githubで C++やC#のプロジェクトを検索しようと思ったら ワイルドカード文字は 検索対象外らしく Cがつくもの全てが列挙されます! これではとても不便ですね。というわけで githubのヘルプを読みます language:go などで、言語を指定できるようです 試しに language:c++ 素晴らしい。C++でフィルター出来ました 他の言語でも language: を使ってサーチしたほうがいいですね。 私は英語読めないのでわかりませんが、他にも色々とサーチのオプションがあるみたい 便利なサーチ方法あったら 教えて下さい! みんな知ってましたか? 常識ですか? 私は知りませんでした。。。

    githubでC++やC#を検索する方法 - Qiita
  • volatileで排他制御出来ると、いつから思ってた? atomicやsynchronized使うべし - Qiita

    volatileで排他制御出来ると、いつから思ってた? atomicやsynchronized使うべしJava package test; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicInteger; public class Sync { private final int THREAD_NUM = 50; private final int COUNT_NUM = 1000; private static Sync instance = new Sync(); private int mCounter=0; private volatile int mVolatileCounter=0; private Object mSyncO

    volatileで排他制御出来ると、いつから思ってた? atomicやsynchronized使うべし - Qiita
  • 1