2004年05月25日

volatile

C++でvolatile修飾子を変数につけるとその変数はスレッドセーフになるという勘違いを今までしていました…

Posted by Akihiro at 15:57 | Comments (2)

マルチスレッドでの参照カウント

オブジェクトの寿命を管理する手段として参照カウントがあります。
オブジェクトが必要になれば参照カウントをインクリメントし、
不要になればデクリメントします。
どこからも全く必要とされていない場合は参照カウントが0になるのでオブジェクトを破棄することが出来ます。

参照カウントをマルチスレッドで操作する場合は、参照カウントが複数のスレッドから同時に変更されるのを防ぐ必要がありますが、
WindowsのAPIにはそのためのAPIがあります。今日知りました…

InterlockedIncrement
InterlockedDecrement

です。それぞれ、参照カウントを増やしたり減らしたりします。

Posted by Akihiro at 15:51 | Comments (0)

目薬

疲れ目に効く!なんていう目薬がたくさん市販されていますが、
はっきりいって、これまでそんなの信じていませんでした。
目が潤うだけなんじゃないかと。
目薬はコンタクトをつけていて、目が乾いてきたときだけ使っていました。

そんな自分ですが、先日ふらっと薬局に行ったついでに
マイティア ビタミンB2 B6 E
という、そこそこ(?)の価格帯の目薬を買ってみました。

で、目が疲れたときに使ってみました。
効きます!
気休めなのかもしれませんが、本当に目がすっきりしました。
ビタミンとか入っていて目にも良さそうな気がするので、これからはこまめに使おうかなと思います。

Posted by Akihiro at 10:25 | Comments (0)

2004年05月14日

typedef template?

templateのパラメータを2つ持っているクラスがあるとして、
そのうち1つだけを決めてもう片方をtemplateパラメータとして残しておきたい
ということがありました。

template<class A, class B> class Foo .....
template<typename T> typedef Foo<int, T> IntegerFoo; // IntegerFoo<string> のように使用する(したい)

ところがこれできないんですね。。。あちこちでC++の規格に追加してよと提案されてはいるようですが。

というわけで、今回はtypedefするのではなくて、派生クラスを定義して同じことを実現しました。

template<typename T> class IntegerFoo : public Foo<int, T> {};

ただこの手法はもちろんFooが派生可能であるということが前提です。

調べてみると他にもいろいろなアプローチがあるようです。
MSDN Deep C++ Typedef Templates

Posted by Akihiro at 11:57 | Comments (3)

2004年05月13日

WTL

Microsoftが公開していたGUIライブラリ、Windows Template Library(WTL)
がSourceForgeにて公開されたようです。
これからもどんどんと改善されることを期待していいのかな?
近々機会があれば使ってみたいと思っています。

Posted by Akihiro at 12:03 | Comments (3)

2004年05月11日

Boost C++ Library プログラミング

Boost C++ Library プログラミング という本を買いました。

Boostを今まで愛用していたとはいえ、知らないライブラリもまだまだたくさんあるので、
これから活用していきたいと思っています。

Posted by Akihiro at 13:15 | Comments (0)

2004年05月10日

The Boost Lambda Library

Boostというライブラリが好きです。
これは色々なライブラリを併せたもので、
スマートポインタなんかはとても便利で一度使うともう離れられません。

そんなBoostのライブラリの中に、lambda というライブラリがあります。
無名関数を作るというライブラリなのですが、はっきり言って今まで使い道が分かっていませんでした。
まぁ僕には縁のない学術的な世界の話なのだろうと。。。

で、最近STLのアルゴリズム(find_ifとか、bindとか)を使い始めました。
ループを書かなくてすんだりして楽なのですが、find_ifなんかは比較関数をわざわざ用意しなくてはならず、逆に面倒なことになったりもしていました。
こんな関数を用意せずに使えたらなぁ・・・ってそれがBoostのlambdaなのでした。

すごい!の一言。
もう少し勉強して今度実際に使ってみよう。

Posted by Akihiro at 16:35 | Comments (0)

2004年05月07日

Color Space FAQ

色空間のことで質問したらcolorspace-faqというのを教えていただきました:-)

Posted by Akihiro at 15:50 | Comments (1)