class count
{
public:
//自定义构造函数
count(int _id) :id(_id){}
//重载调用操作符
void operator ()()
{
for (int i = 0; i < 3; ++i)
{
boost::mutex::scoped_lock
lock(io_mutex);
std::cout << id << ": "<<i << std::endl;
}
}
private:
int id;
};
//主程序
int main(int argc, char* argv[])
{
boost::thread thrd1(count(10));
boost::thread thrd2(count(20));
thrd1.join();
thrd2.join();
return 0;
}
代码执行后,显示线程1执行计数三次完再线程2计数三次如下
1:0
1:1
1:2
2:0
2:1
2:2
示例代码中调用操作符的重载operator没有带参数,现想稍作修改在定义调用操作符的重载时带上一个参数,来控制计数的个数,如下
void operator ()(int upper)
{
for (int i = 0; i < upper; ++i)
{
boost::mutex::scoped_lock
lock(io_mutex);
std::cout << id << ": "<<i << std::endl;
}
main函数部分要怎么修改才能实现两个线程先后计数不同次数
比先1:0到1:4再2:0到2:9这样子。
示例代码头文件部分如下
#include <iostream>
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
boost::mutex io_mutex;
茅侃侃
相关分类