123456789101112131415161718192021222324252627282930313233343536 |
- // 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>
- const int NUM_CALCS=5;
- 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 results[NUM_CALCS];
- boost::thread_group thrds;
- for (int i=0; i < NUM_CALCS; ++i)
- thrds.create_thread(factorial(i*10, results[i]));
- thrds.join_all();
- for (int j=0; j < NUM_CALCS; ++j)
- std::cout << j*10 << "! = " << results[j] << std::endl;
- }
|