博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++11 多线程
阅读量:6312 次
发布时间:2019-06-22

本文共 1159 字,大约阅读时间需要 3 分钟。

[cpp]
  1. #include <iostream>   
  2. #include <chrono>   
  3. #include <thread>   
  4. #include <mutex>   
  5. #include <map>   
  6. #include <string>   
  7.   
  8.   
  9.   
  10. using namespace std;  
  11. map<string, string> g_pages;  
  12. mutex g_pages_mutex;  
  13.   
  14. void save_page(const string &url)  
  15. {  
  16.     // simulate a long page fetch   
  17.     this_thread::sleep_for(chrono::seconds(1));  
  18.     string result = "fake content";  
  19.   
  20.     g_pages_mutex.lock();  
  21.     g_pages[url] = result;  
  22.     g_pages_mutex.unlock();  
  23. }  
  24.   
  25. int main()   
  26. {  
  27.     thread t1(save_page, "http://foo");  
  28.     thread t2(save_page, "http://bar");  
  29.     t1.join();  
  30.     t2.join();  
  31.   
  32.     g_pages_mutex.lock(); // not necessary as the threads are joined, but good style   
  33.     for (auto iter=g_pages.begin();iter!=g_pages.end();iter++) {  
  34.         cout << iter->first << " => " << iter->second << '\n';  
  35.     }  
  36.     g_pages_mutex.unlock(); // again, good style   
  37.     system("pause");   
  38. }  

如果你加个map<string,string>::iterater iter; 实现也是可以的,用了声明,就可以不用auto了。

上面的也是演示c++11的多线程特性。利用了mutex。(幸亏学了操作系统,明白了线程的互斥概念。)

当然可以更加简化,类似C#的foreach一样。(当然我没怎么接触过C#)

修改如下:

for (auto pair:g_pages) {		cout << pair.first << " => " << pair.second << '\n';	}
结果就不写了,都是一样的,实现方式不同而已。

注:VS2012才支持C++11,测试过VS2010SP1也不支持C++11,看国外的网站也说VS2012才开始支持。

 

转载于:https://www.cnblogs.com/hehehaha/archive/2013/05/24/6332744.html

你可能感兴趣的文章
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>
用sqlplus远程连接oracle命令
查看>>