一 代码组织
二 代码详解
1. smartcounter.cpp
/*************************************************************************
> File Name: thread.cpp
> Author: wangzhicheng
> Mail: 2363702560@qq.com
> Created Time: Wed 25 Feb 2015 09:38:30 PM WST
************************************************************************/
#include <iostream>
#include <vector>
#include <thread>
#include <mutex>
#include <functional>
using namespace std;
class SmartCounter {
private:
int cnt;
mutex mymutex;
public:
SmartCounter() {
cnt = 0;
}
void inc() {
std::lock_guard<std::mutex>guard(mymutex);
while(cnt < 1e6) cnt++;
}
void show() const {
cout << cnt << endl;
}
};
int main() {
SmartCounter counter;
vector<thread>threads;
int i;
for(i = 0;i < 16;i++) {
threads.push_back(thread(bind(&SmartCounter::inc, &counter)));
}
for(i = 0;i < 16;i++) {
threads[i].join();
}
counter.show();
return 0;
}
2. makfile
CC=g++
all:
$(CC) -std=c++0x -g -o smartcounter smartcounter.cpp -pthread
三 运行测试