タグ

ブックマーク / yohhoy.hatenadiary.jp (3)

  • 文字列取得バッファとしてのstd::string - yohhoyの日記

    C++標準ライブラリの文字列型 std::string*1 を、C言語インタフェースへの文字列取得バッファとして使う方法についてメモ。記事の内容はStack Overflowで見つけた質問と回答に基づく。 2016-03-27追記:C++17(C++1z)対応版はこちら→文字列取得バッファとしてのstd::string リターンズ - yohhoyの日記 2013-08-30追記:C++03以前でも事実上「std::string 内の文字列バッファは連続したメモリ領域」といえる?C++ Standard Library Defect Report List #530 Must elements of a string be contiguous?、Cringe not: Vectors are guaranteed to be contiguousコメントも参照のこと。 まとめ: C++

    文字列取得バッファとしてのstd::string - yohhoyの日記
    delegate
    delegate 2024/01/10
    [std::string][あとで読む]
  • 条件変数とspurious wakeup - yohhoyの日記

    条件変数(condition variable)同期プリミティブにまつわる "spurious wakeup" についてメモ。 安定した対訳語が存在しないようなので、記事ではそのまま英語表記とする*1。spurious は “偽の; 疑似; 似非” といった意味の単語であり*2、wakeup は “条件変数で待機していたスレッドがブロック解除されて実行再開する”(=寝ていたスレッドが起きる)ことを意味する。 まとめ: spurious wakeup は、「条件変数での待機(wait)処理において、何もしていないのにブロック解除される現象」を指す。ライブラリ内部実装やハードウェア/OSの都合といった、同期プリミティブの利用者から関与できない原因によって生じる。その発生頻度は特に言及されないが、一般的には低確率でしか生じないはず。 spurious wakeup に対応するため、条件変数での

    条件変数とspurious wakeup - yohhoyの日記
  • C++11標準ライブラリのスレッド安全性 - yohhoyの日記

    C++11標準ライブラリが提供する機能とスレッド安全性(thread safety)についてのメモ*1。C++03以前では処理系依存。 要約:C++標準ライブラリのオブジェクトでは、少なくとも言語組み込みint型と同様のスレッド安全性を提供する。 基的なスレッド安全性 C++標準ライブラリが提供するオブジェクトは、個々の関数動作仕様で特記されるケースを除いて、下記の基的なスレッド安全性を保証する。 異なるスレッド上における異なるオブジェクトに対する操作はデータ競合を引き起こさない。*2(1.10, 17.6.5.9/p2-4) 異なるスレッド上における同一オブジェクトに対する操作は、全スレッドがreadアクセスのみであればデータ競合を引き起こさない。少なくとも一方が変更操作を行う場合はデータ競合を引き起こす。*3 *4(1.10) 明に要求している場合を除いて、引数やコンテナ要素が間接

    C++11標準ライブラリのスレッド安全性 - yohhoyの日記
  • 1