2009-02-01から1ヶ月間の記事一覧

前回雑記で書いたthreadクラスの実装を晒す

C++

実装を見る前にもう一度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が必要になったので作ってみた

C++

boostにあるref相当の物が必要になりました。 なので作ってしまいます。 template class reference_holder { T& val_; public: reference_holder(T& arg) : val_(arg) {} // Tのリファレンスを保持 operator T&() { return val_; } // 型変換を利用してTのリ…

ISO/IEC 14882:2003 PDFをみつけた。

C++

これってまずいんじゃないですか?(^-^; それとも偽者? 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()っ…

gcc4.4のthreadがコンパイルできない

C++

Windows版だけかもしれませんが、C++0xのヘッダは以下の定義が入っていてclass threadが使えなかったです。 #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) これらはで定義されてます。 /* Define if gthreads library is ava…

opensslにAES暗号化ライブラリがあるのを知ったのでこんな形で利用できるようにラップしてみました。

C++

キーと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++を教えながら仕事してるんですが み…

シングルトンについて

C++

結論から言うとDouble Checked Lock使う場合はメモリバリアを入れなさいと。 そうでないならThread Local Storageを使って実装しなさいなのですねー。 [参考1]The "Double-Checked Locking is Broken" Declaration [参考2]Binary Hacks ―ハッカー秘伝のテク…

まりあほりっく面白い!

さっきまでDouble Checked Lockはメモリモデルによって 未初期化オブジェクトが返るって話を書こうと思ってたけど まりあほりっくが始まったので中止w