1cb08ff60c
[SVN r35115]
37 lines
862 B
C++
37 lines
862 B
C++
// 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;
|
|
}
|