1 // Copyright (C) 2001-2003 2 // William E. Kempf 3 // 4 // Distributed under the Boost Software License, Version 1.0. (See accompanying 5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 7 #include <boost/thread/thread.hpp> 8 #include <boost/ref.hpp> 9 #include <iostream> 10 11 class factorial 12 { 13 public: factorial(int x)14 factorial(int x) : x(x), res(0) { } operator ()()15 void operator()() { res = calculate(x); } result() const16 int result() const { return res; } 17 18 private: calculate(int x)19 int calculate(int x) { return x <= 1 ? 1 : x * calculate(x-1); } 20 21 private: 22 int x; 23 int res; 24 }; 25 main()26int main() 27 { 28 factorial f(10); 29 boost::thread thrd(boost::ref(f)); 30 thrd.join(); 31 std::cout << "10! = " << f.result() << std::endl; 32 } 33