いつでも使える方法ではないですが、コールバック関数で値を書き換え、書き換わったかどうかを判定する、というのがよく使う方法です。 以下は、Boost.Asioのio_serviceを使用した例。 #include <boost/detail/lightweight_test.hpp> #include <boost/asio.hpp> #include <boost/bind.hpp> namespace asio = boost::asio; void f(int& x) { x = 2; // 2. 書き換える } int main() { int x = 1; // 1. 元々の値 asio::io_service io_service; io_service.post(boost::bind(f, boost::ref(x))); io_service.run(); // 3. コー