我刚开始升压。我想问一下我的代码是否很好地使用了互斥锁。为了测试它,我编写了计算数字 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;
}
结果看起来不错,没有互斥锁看起来很糟糕,所以我认为我正确使用了它,但只是想问一下是否一切正常。感谢您的任何建议;我希望它对我和其他人有帮助。