ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

boost::thread のバグ?



久しぶりにダイアリー書いたんでついでにこれも。


boost/libs/thread/src/thread.cpp より。

    unsigned __stdcall thread_proxy(void* param)
    {
        try
        {
            thread_param* p = static_cast(param);
            boost::function0 threadfunc = p->m_threadfunc;
            p->started();
            threadfunc();
            on_thread_exit();
        }
        catch (...)
        {
            on_thread_exit();
        }
        return 0;
    }

この仕様はどうかなぁと。


スレッド内部で拿捕していない例外が発生したら無言でスレッド終了?
ちょっとそれはあんまりだと思う...


DebugBreak が利かないから調べたらこれが原因だった...


ここは

    unsigned __stdcall thread_proxy(void* param)
    {
        boost::function0 threadfunc;
        try
        {
            thread_param* p = static_cast(param);
            threadfunc = p->m_threadfunc;
            p->started();
        }
        catch (...)
        {
            on_thread_exit();
        }

        threadfunc();

        on_thread_exit();
        return 0;
    }

こう書くべきだと思うんだけど誰もつっこまない、ってことは
私の方がおかしいのかなぁ?