C++中怎么实现一个多线程计数器

C++中怎么实现一个多线程计数器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联主打移动网站、成都网站建设、网站制作、网站改版、网络推广、网站维护、域名注册、等互联网信息服务,为各行业提供服务。在技术实力的保障下,我们为客户承诺稳定,放心的服务,根据网站的内容与功能再决定采用什么样的设计。最后,要实现符合网站需求的内容、功能与设计,我们还会规划稳定安全的技术方案做保障。

以计数器实现为例子,演示了多线程计数器的实现技术方法,代码如下:

//目的: 测试利用C++ 11特性实现计数器的方法 //操作系统:ubuntu 14.04 //publish_date: 2015-1-31 //注意所使用的编译命令: g++ -Wl,--no-as-needed -std=c++0x counter.cpp -lpthread #include  #include  #include  #include   using namespace std;  atomic_int Counter(0); int order[400];  void work(int id) {     int no;     for(int i = 0; i < 100; i++) {         no = Counter++;         order[no] = id;     } }  int main(int argc, char* argv[]) {     vector threads;     //创建多线程访问计数器     for (int i = 0; i != 4; ++i)         //线程工作函数与线程标记参数         threads.push_back(thread(work, i));     for (auto & th:threads)         th.join();     //最终的计数值     cout << "final :" << Counter << endl;     //观察各线程的工作时序     for(int i = 0; i < 400; i++)         cout << "[" << i << "]=" << order[i] << " ";     return 0; }

注意编译命令的参数,尤其,-lpthread

否则,若无该链接参数,则编译不会出错,但会发生运行时错误:

terminate called after throwing an instance of ‘std::system_error’

what(): Enable multithreading to use std::thread: Operation not permitted

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


新闻名称:C++中怎么实现一个多线程计数器
分享地址:http://myzitong.com/article/gijscj.html