タグ

スレッドとC++に関するiwwのブックマーク (6)

  • そろそろvolatileについて一言いっておくか

    わんくま同盟 東京勉強会 #35 そろそろvolatileについて一言いっておくか わんくま同盟 東京勉強会 #35 自己紹介 • H/N: yamasa • FreeBSD使い • Java屋 • モバイル大好き わんくま同盟 東京勉強会 #35 今日のキーワード • アトミック変数 • メモリバリア • happens before • 正しく同期化されたコード • volatile わんくま同盟 東京勉強会 #35 マルチスレッドと排他制御 マルチスレッドプログラミングで苦労する点 – 同じ変数やオブジェクトが複数のスレッドから 同時にアクセスされる可能性がある。 mutex などの排他制御(ロック)を使って対処 – あらゆる変数を排他制御しなければならないの? ロックによるパフォーマンスの劣化も気になる。 ⇒ もっと軽量の仕組みはないの? わんくま同盟 東京勉強会 #35 スレッド

    iww
    iww 2013/05/24
    volatileへの言及は最後に一言しかない
  • C++ でお手軽なスレッドセーフクラスを作る « Stop Making Sense

    August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) はじめに スレッドセーフなコードを書く pthread を使ってスレッドセーフなコードを書くと、概ね次のようになります。 pthread_mutex_t mutex; // MUTEX Person safe_person; // 保護する変数 ..

  • C++でスレッドクラス - blog - nasu

    C++Javaっぽいスレッドクラス作るには、 pthread_createにthisを渡すことで実現できる。 #include<pthread.h> #include<stdio.h> #include<iostream> using namespace std; class Runnable{ private: public: Runnable(){} virtual ~Runnable(){} virtual void run() = 0; }; class Thread : virtual public Runnable{ private: Runnable * runnable; pthread_t threadID; static void * __run( void * cthis ){ static_cast<Runnable*>(cthis)->run(); return

  • shared_ptr の排他制御を抑止する。 | 株式会社きじねこ

    スマートポインタ boost::shared_ptr は非常に便利であり、おそらく Boost C++ Libraries の中でもっとも多く使われている機能のひとつです。boost::shared_ptr は、普通は何も考えずにデフォルトのまま使っていても問題はないのですが、いざ効率のことを考え始めると、問題点が浮き上がってきます。 shared_ptr はスレッドセーフな設計がされており、参照カウンタの増減の際は当然排他制御が行われます。排他制御を行うかどうかは、Boost.Config で決定するわけですが、Visual C++ 2005 のようにシングルスレッドをサポートしない処理系では、常に排他制御が行われることになります。 しかし、現実には、シングルスレッドで十分なアプリケーションも多数ありますし、仮にマルチスレッドであったとしても、shared_ptr をスレッド間で共有する

  • gccにおけるatomic操作命令の個別関数

     gccとVC x86/x64環境で開発する上で, gccとVCはどちらも非常に優れたC/C++コンパイラです. ただLinuxWindowsのどちらの環境でも動作するようなC/C++コードを書くためには, gccとVC, およびそれらが動作するOSの違いが問題になることがあります. ここではそれらの違いについてまとめていきたいと思います. なお説明を簡単にするためにマクロを多用していますが実際には可能なら別の手段をとるか, 名前がぶつからないような命名規則に則ったマクロ名をつけることをお薦めします. 対象 定義済みマクロ 有用なマクロ コンパイルオプション 演算子の代替表現の抑制 日語のコメント 型 pragma attributeとdeclspec ファイル入出力 テキストとバイナリ 巨大なファイル static変数の初期化 snprintf 例外ハンドラ intrinsic関数

    iww
    iww 2012/01/19
    関数内のstatic変数の初期化はデフォルトでスレッドセーフ
  • g++ の -fthreadsafe-statics ってオプション知ってます? - memologue

    古来より、関数スコープの静的なオブジェクトを作るのは危険 void foo() { static CBar bar; // こんなの とされています。foo()が初めて呼ばれたタイミングでbarのコンストラクタが走るわけですが(C++規格でそう決まっている)、foo()の初回呼び出しが2つのスレッドでほぼ同時に行われると、barのコンストラクタが複数回走ってしまったりと、不可解な動作をすることが知られています。 参考サイト: http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx (引用するの何度目だろ) ところが、最近のg++には -fthreadsafe-statics っていうオプションがあって、この初回のコンストラクタ呼びをスレッドセーフに行ってくれるようになりました。手元のgcc3.4.3ではデフォルトでon

    g++ の -fthreadsafe-statics ってオプション知ってます? - memologue
  • 1