随笔分类 -  多线程编程技术

并发、多线程、线程池
摘要:在多线程编程中,锁是常用地控制并发的机制,对于临界区的资源,需要保证线程之间互斥地访问。 1. 可重入锁 可重入锁,也叫做递归锁,指的是多次对同一个锁进行加锁操作,都不会阻塞线程。实现思路:记录当前锁正在被哪个线程使用,采用计数来统计lock和unlock的调用次数。正常情况下,lock和unloc 阅读全文
posted @ 2020-02-26 19:51 wengle 阅读(966) 评论(3) 推荐(1) 编辑
摘要:乐观锁、悲观锁是从其使用角度来看。(PS:比如ReentrantLock内部实现用到了CAS和自旋来提高性能,但是从其使用角度来看,是用到了悲观锁的思想。) 1. 乐观锁 乐观锁:顾名思义就是在操作时很乐观,认为操作不会产生并发问题(不会有其他线程对数据进行修改),因此不会上锁。但是在更新时会判断其 阅读全文
posted @ 2020-02-26 18:32 wengle 阅读(256) 评论(0) 推荐(0) 编辑
摘要:多线程同步问题,都需要用到监视器,用来监视资源是否可用。C++中使用condition_variable,Java中使用Condition来实现同步。 1. 实现思路 1. 需要有一个全局变量控制当前该哪个线程访问资源 2. 调用wait,让出资源使用权 3. 调用notify,通知线程访问资源 2 阅读全文
posted @ 2020-02-25 14:02 wengle 阅读(347) 评论(0) 推荐(0) 编辑
摘要:本文主要介绍 如何设计一个高效通用的线程池 。详细说明了一个线程池由哪几部分组成,最后通过100行C++代码实现一个高效通用的线程池。 1. 线程池的基础元素 1. std::vector\ workers 2. std::queue\ tasks 3. std::mutex queue_mutex 阅读全文
posted @ 2020-02-22 16:31 wengle 阅读(696) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示