中易网

C++中关于调用操作符的重载operator()与自定义构造函数

答案:1  悬赏:60  
解决时间 2021-04-21 15:48
最近在学习boost的Thread库时中看到一段join()方法的示例代码: 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;
最佳答案
thread thrd1(count(10), 5);
    thread thrd2(count(20), 10);顺带一提, C++11 已有线程库,无需使用 boost
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
追星有什么好的,为什么那么多人去追星呢?
影月谷的圣契任务
闫嵩是明朝第几代皇帝的大臣
贝朗医疗地址有知道的么?有点事想过去
松木家具可以烫蜡吗?
碰碰香不是最忌多水的吗?为什么我看到有水培
纱布束腹带顺产后多久可以用?
南昌桑海经济开发区为什么叫桑海
夏天能做什么用英语回答
NOKIA N73市场价多少谁知道,说下
谁给我个网游 龙 的激活码。
揭阳潮汕机场怎么坐车去潮汕动车站?
剖层移膜牛皮包怎么清洁
真爱一个人会在乎她的过去吗?
怎么应付讨债公司
推荐资讯
中秋放几天假
住番禺石楼附近,想去游泳,谁知道附近哪有游
狗狗吞了整块磨牙棒怎么办?
有事木事出出手汗,算病么,?
关于清朝的公主和额驸关系
我做的牙齿矫正,牙缝已经收齐了现在正在做调
广州最大的批发市场在哪里?
佳荣洗化我想知道这个在什么地方
肌酐偏高大概是什么引起的
已知m,n是方程x²-3x+2=0的两个实数根,求m²
这些页务要怎么熄灭,看图片?
在河南开封地区收了小麦可以种土豆吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?