C++11多线程
文章平均质量分 96
◤一念执着 ‖ TIAMO 丶
这个作者很懒,什么都没留下…
展开
-
C++11多线程(下)
接着上次的的测试函数继续往下看,我们仔细分析一下 isGet这个函数,就可以发现它的unique_lock<>()执行次数非常多,每次进入到 isGet 这个函数就会加锁,这样会拉低程序的运行效率,下面提供两个解决方案:(1)双重锁定(双重检查)上一次我们在写单例类的时候已经说到过这个问题,双重检查会大大减少锁定的次数,提高程序的效率。if (!l1.empty())//双重检查if (!先对 l1 进行判空操作,如果l1是空,则就不会加锁,这样就会大大减少加锁的次数从而提高程序效率。原创 2023-09-18 18:38:16 · 129 阅读 · 0 评论 -
C++11 多线程(中)
lock()内的两个互斥量,对顺序没有要求。unique_guard()可以取代lock_gaurd(),unique_guard()可能会占用更多的内存,但是unique_guard()的使用会比lock_guard()更灵活,上面我么说到过lock_guard()的第二个参数adopt_lock,当然unique_guard()也支持这个参数,和lock_guard()的作用是一样的,下面我们就来看看unique_guard()的不同的第二个参数。原创 2023-09-10 19:49:18 · 164 阅读 · 1 评论 -
C++11 多线程 (上)
进程是资源分配的基本单位,是程序的一次执行过程,结合实际,比如打开一个QQ,就是启动了一个进程,在vs里面运行一个程序也是一个进程。线程是调度的基本单位,引入线程的目的就是要提高程序运行的效率,一个进程可以包括多个线程,但是一个进程只有一个主线程,打开电脑的任务管理器可以很清楚的看到当前在运行的进程和线程。原创 2023-09-02 20:21:32 · 213 阅读 · 0 评论