weak_ptr and threads