スコープの落とし穴

Javaのスレッドのようなスレッド操作のヘルパークラスを作った。こんな感じで使う。

Thread *thread = new Thread(Runnable *target, Logger *logger);
thread->start();

別スレッドで target->Run() が実行されて、それが終了しだいthreadもメモリから解放されるというもの。簡単な仕組みのわりになかなか便利だ。スレッドの状態をログに出すこともできる。

しかし、テストプログラムでテストしていたところ、エラーがたまに起こる。良く見ると、テストプログラムの中で、Loggerオブジェクトが、スレッド実行時点でスコープから外れてしまっていた。。。

これのせいで、徒歩で帰宅。orz