自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 C++ 获得程序运行时间

有时候需要知道自己的某段函数运行了多少时间,在C语言里可以用time_t,C++有一个新的命名空间: std::chrono。可以计算出毫秒、微秒、纳秒: std::chrono::system_clock::time_point start = std::chrono::system_clock::now(); std::this_thread::sleep_for(std::chrono

2017-09-11 18:43:21 881

原创 STL实现读写锁

在这里不考虑std::shared_mutex, 只用条件变量和std::mutex来实现。分析读写锁的逻辑:读锁之间是不冲突的,无论多少个线程申请读锁,不需要等待。但是要想获得写锁,就必须等所有的读锁全部释放完毕。那么怎么知道所有的读全部结束了呢?只能用一个int变量去记录读锁的总数。这个变量变为0意味着所有的读都结束了。所以,写锁的条件变量的写法类似于: while (reade

2017-08-29 21:53:56 3363

原创 高性能的随机数算法std::mt19937

相对于传统的srand(),std::mt19937拥有更好的性能。使用方法: std::mt19937 generator(std::chrono::system_clock::now().time_since_epoch().count()); unsigned int random1 = generator(); unsigned int random2 = generator

2017-08-24 00:11:02 9667

原创 c++ 简化版lambda的介绍

lambda表达式,也叫匿名函数,本质上就是一个函数,只是这个函数没有名字。函数没有名字有什么好处呢?写得比较快啊。【需要注意发音,这个单词lambda中间的b是不发音的。】lambda表达式的完整形式很长很繁杂,实际应用中不可能用得太繁杂。因为又繁杂又没有函数名字会造成理解上的困难,没有必要了。常见的简化版的lambda表达式有三个要素:中括号、小括号、大括号[](){}中括

2017-08-23 23:26:08 485

原创 关于std::condition_variable需要注意的地方spurious wake-ups

在使用条件变量的时候,一定要放在一个循环里,这是为什么呢?因为spurious wake-ups什么是spurious wake-ups?Because of some complications in making the condition wake-up completely predictable on multiprocessor systems, spurious wa

2017-08-23 22:19:01 426

原创 std::lock的使用方法

假设有两个mutex(m1、m2),一个线程先锁住m1再锁住m2,另一个线程先锁住m2,再锁住m1,就有可能会出现死锁。std::lock内部使用了死锁避免的算法,可以有效避免死锁。有两种用法:std::lock(m1, m2)std::lock_guard lock1(m1, std::adopt_lock)std::lock_guard lock2(m2, std::adopt

2017-08-23 11:53:22 5246 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除