summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/thread/tutorial/factorial.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/thread/tutorial/factorial.cpp')
-rw-r--r--src/boost/libs/thread/tutorial/factorial.cpp32
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;
+}