weak_ptrをスレッド跨ぎに使うととても便利だぞ。

スレッドAからスレッドBに作業を依頼するとき、スレッドA内でコールバックする
オブジェクトをweak_ptrに入れてスレッドBに渡す。
スレッドBは結果を返す時、weak_ptrを一緒に返す。
スレッドAは結果が返されたとき、weak_ptrが生きているかどうかで処理を継続するか
破棄するか決定する。