ブーストを始めたばかりです。私のコードがミューテックスをうまく使用しているかどうかを尋ねたいと思います。それをテストするために、1 から n までの数値の合計を数えるコードを書きました。それを数える愚かな方法ですが、私は n 個のスレッドを使用しました...ミューテックスを試すためだけに...
#include <boost/thread/mutex.hpp>
#include <boost/thread/thread.hpp>
#include <iostream>
#define NUMBER 10
boost::mutex mutex;
unsigned long long sum = 0;
class counter
{
public:
counter() : count(0) { }
unsigned long long increment()
{
return ++count;
}
private:
unsigned long long count;
};
counter c;
void count()
{
boost::mutex::scoped_lock scoped_lock(mutex);
unsigned long long i = c.increment();
sum += i;
std::cout << "i=" << i << "\tsum=" << sum << std::endl;
}
int main(int, char*[])
{
boost::thread_group thrds;
for (int i=0; i < NUMBER; ++i)
{
thrds.create_thread(&count);
}
thrds.join_all();
system("pause");
return 0;
}
結果は良さそうですが、ミューテックスなしでは見栄えが悪いので、正しく使用したと思いますが、すべてが問題ないかどうかを尋ねたいだけです。アドバイスありがとうございます。私や他の人に役立つことを願っています。