タグ

C++11とc++11に関するbabydaemonsのブックマーク (5)

  • モダンなC++におけるコンパイル時間削減のテクニック (第2弾) - Qiita

    はじめに まさかの第2弾です。 前回の記事が好評だったため、今回は少し違った視点からコンパイル時間の削減についての話をさせていただこうと思います。 C++17も普及してきたようで、C++の構文はますます複雑化しています。テンプレートを使用したテクニックやconstexprの需要の増加に伴い、ヘッダオンリーのライブラリの増加、コンパイル時処理の増加が見られるようになりました。 しかしそれと反比例して、C++のコンパイル時間は増大していきます。 一つの翻訳単位でもコンパイル時間が数十秒、あるいは数分に及ぶことさえあり、さらにコンパイル中のメモリ消費量も問題になってきます。 あるヘッダオンリーライブラリを利用した時は、たった一つの翻訳単位でメモリの6割を消費してしまいました。 前回の記事では、主にソースコードに工夫を加えることによってコンパイル時間を削減する方法を紹介してきました。なので今回は、

    モダンなC++におけるコンパイル時間削減のテクニック (第2弾) - Qiita
  • C++11における同期処理(std::mutex, std::unique_guard, std::lock_guard, std::condition_variable) - Qiita

    C++11における同期処理(std::mutex, std::unique_guard, std::lock_guard, std::condition_variable)C++C++11 前回は非同期処理についてまとめたが、 今回は並行(concurrent)処理中の同期が必要な処理をC++11で実行するために必要な知識をまとめていく。 ThreadPoolを実装するために必要な知識として、 mutexによるロック 条件変数の使い方 をまとめる。 ThreadPoolはまた次回に持ち越しである。 mutexを用いたロック: std::unique_lock or std::lock_guard ? スレッド間でもプロセス間でも相互排他処理、 つまりある操作を同時に実行するスレッド/プロセスが一つである事を保証する必要がある場合がある。 このような排他的に実行する必要のある処理をクリティカ

    C++11における同期処理(std::mutex, std::unique_guard, std::lock_guard, std::condition_variable) - Qiita
  • mutexの制約とバイナリセマフォ - yohhoyの日記

    C++11標準ライブラリのstd::mutexオブジェクトでは、ロック取得/解放を同一スレッド*1から行わなければならない。(N3337 30.2.5.2/p3) m.unlock() Requires: The current execution agent shall hold a lock on m. この制約条件のため、下記コードのmutexオブジェクト利用は未定義動作(undefined behavior)を引き起こす。 #include <thread> #include <mutex> std::mutex mtx; // mutexオブジェクト int resource; // 保護対象のリソース void proc() { // resourceを使う処理B mtx.unlock(); // (2) NG:別スレッドでロック解放...したい //... } int mai

    mutexの制約とバイナリセマフォ - yohhoyの日記
  • スレッドセーフという幻想と現実 - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr

    スレッドセーフという幻想と現実 - yohhoyの日記(別館)
    babydaemons
    babydaemons 2015/02/09
    “利用者視点の表現では、上記ルール“全てconstメンバ関数相当呼び出しならば排他制御は不要である”というのが、C++標準ライブラリが提供するスレッドセーフ保証と解釈できます”
  • C++11 - Wikipedia

    この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。(2019年1月) C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された[4]。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。 C++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会は、新規格の個別の要素の

  • 1