STL
tillmanSkate
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
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 · 5472 阅读 · 1 评论 -
关于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 · 539 阅读 · 0 评论 -
高性能的随机数算法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 · 10105 阅读 · 0 评论 -
STL实现读写锁
在这里不考虑std::shared_mutex, 只用条件变量和std::mutex来实现。 分析读写锁的逻辑: 读锁之间是不冲突的,无论多少个线程申请读锁,不需要等待。但是要想获得写锁,就必须等所有的读锁全部释放完毕。那么怎么知道所有的读全部结束了呢?只能用一个int变量去记录读锁的总数。这个变量变为0意味着所有的读都结束了。所以,写锁的条件变量的写法类似于: while (reade原创 2017-08-29 21:53:56 · 3480 阅读 · 0 评论
分享