diff options
Diffstat (limited to 'src/boost/libs/thread/tutorial/factorial.cpp')
-rw-r--r-- | src/boost/libs/thread/tutorial/factorial.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/boost/libs/thread/tutorial/factorial.cpp b/src/boost/libs/thread/tutorial/factorial.cpp new file mode 100644 index 000000000..9dd1001d9 --- /dev/null +++ b/src/boost/libs/thread/tutorial/factorial.cpp @@ -0,0 +1,32 @@ +// Copyright (C) 2001-2003 +// William E. Kempf +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include <boost/thread/thread.hpp> +#include <iostream> + +class factorial +{ +public: + factorial(int x, int& res) : x(x), res(res) { } + void operator()() { res = calculate(x); } + int result() const { return res; } + +private: + int calculate(int x) { return x <= 1 ? 1 : x * calculate(x-1); } + +private: + int x; + int& res; +}; + +int main() +{ + int result; + factorial f(10, result); + boost::thread thrd(f); + thrd.join(); + std::cout << "10! = " << result << std::endl; +} |