2009-02-01から1ヶ月間の記事一覧
実装を見る前にもう一度threadクラスの使い方を見ておきます。 #include <iostream> #include "thread.hpp" // これから実装を見ていくthreadクラスのヘッダファイル void foo() { std::cout << "fooを実行しています" << std::endl; } int main() { thread t(foo); //</iostream>…
といってもまだ全然追加してません。 仕事で徹夜続きで頭がまわらない。ところで、C++0xのthreadクラスがWindows上で使える環境が手元に無いので作ってしまいました。 前回refが必要になったのはこのthreadクラスのコンストラクタに渡す引数を テンプレート…
boostにあるref相当の物が必要になりました。 なので作ってしまいます。 template class reference_holder { T& val_; public: reference_holder(T& arg) : val_(arg) {} // Tのリファレンスを保持 operator T&() { return val_; } // 型変換を利用してTのリ…
これってまずいんじゃないですか?(^-^; それとも偽者? http://code.google.com/p/openassist/downloads/detail?name=C%2B%2B%20Standard%20-%20ANSI%20ISO%20IEC%2014882%202003.pdf&can=2&q=
さて、MFCのCButtonBitmapの実装をヒントにCButtonのオーナードローをさくせいちゅう。 ボタンの上にマウスあわせると貼り付けたビットマップが変わるようなやつ。 これめんどくさいわー。MSDN見ても実際試してみないとわかんなかったし。 GetSafeHandle()っ…
Windows版だけかもしれませんが、C++0xのヘッダは以下の定義が入っていてclass threadが使えなかったです。 #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) これらはで定義されてます。 /* Define if gthreads library is ava…
キーとIVの設定 aes::aes_cbc cbc_key(key, iv); エンコードするとき // AES-CBC encode // サイズが0以下の場合throw bad_aes_cast aes::byte_string enc_buf = aes::aes_encode_cast(cbc_key, data); デコードする時 // AES-CBC decode // デコードしたい…
仕事が終わって帰ってこれるのが最近1時とかでそこから boostメーリングリストのメール読んでると寝れないw C++0xネタも英語得意じゃないから読むの時間かかるし。 何より今回の拡張はかなり多い。ところで、今会社でC++を教えながら仕事してるんですが み…
結論から言うとDouble Checked Lock使う場合はメモリバリアを入れなさいと。 そうでないならThread Local Storageを使って実装しなさいなのですねー。 [参考1]The "Double-Checked Locking is Broken" Declaration [参考2]Binary Hacks ―ハッカー秘伝のテク…
さっきまでDouble Checked Lockはメモリモデルによって 未初期化オブジェクトが返るって話を書こうと思ってたけど まりあほりっくが始まったので中止w