Linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。一、互斥锁(mutex) 锁机制是同一时刻只允许一个线程执行一个关键部分的代码。 1. 初始化锁 int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mu ...
分类:
编程语言 时间:
2018-08-25 11:33:21
阅读次数:
175
1、自旋锁,自旋,jvm默认是10次,由jvm自己控制,for去争取锁 2、阻塞锁 被阻塞的线程,不会争夺锁 3、可重入锁,多次进入改锁的域 4、读写锁 5、互斥锁,锁本身就是互斥的 6、悲观锁,不相信这里是安全的,必须全部上锁 7、乐观锁,相信这里是安全的 8、公平锁,有优先级的锁 9、非公平锁, ...
分类:
编程语言 时间:
2018-08-23 19:20:00
阅读次数:
286
1. 锁的种类 锁的种类挺多,包括:自旋锁、自旋锁的其他种类、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可重入锁等等,其余就不列出了。我们这边重点看如下几种:可重入锁、读写锁、可中断锁、公平锁。 1.1 可重入锁 如果锁具备可重入性,则称作为可重入锁。synchronized和Ree ...
分类:
其他好文 时间:
2018-08-21 22:37:30
阅读次数:
247
高并发服务器 1.线程池并发服务器 两种模型: 预先创建阻塞于accept多线程,使用互斥锁上锁保护accept(减少了每次创建线程的开销) 预先创建多线程,由主线程调用accept 线程池 3.多路I/O转接服务器 三种模型性能分析 select模型 select用来阻塞监听4,5,6,7是否有数 ...
分类:
系统相关 时间:
2018-08-21 21:14:12
阅读次数:
250
boost库中有一个boost::lockfree::queue类型的 队列,对于一般的需要队列的程序,其效率都算不错的了,下面使用一个用例来说明。 程序是一个典型的生产者与消费者的关系,都可以使用多线程,其效率要比使用上层的互斥锁要快很多,因为它直接使用底层的原子操作来进行同步数据的。 freed ...
分类:
编程语言 时间:
2018-08-20 21:48:39
阅读次数:
321
Manage 进程间的通信是被限制的 两个结果,第一个是2,第二个是1 > 进程内存空间是独立的 解决方案:开辟一个新的进程空间,通过代理器和管理器进行通信 1, 管理器负责与公共进程通信 2, 代理负责操作共享空间 这里需要知道,可以开启的代理空间有以下几个: mgr.list() 列表 mgr. ...
分类:
其他好文 时间:
2018-08-18 17:41:49
阅读次数:
168
python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点: 1 2 3 4 5 6 7 并发编程:线程、进程、队列、IO多路模型 操作系统工作原理介绍、线程、进程演化史、特点、区别、互斥锁、信号、 事件、join、GIL、进程间通信、管道、队列。 生产者消息者模型、异步模型、IO多路复用 ...
分类:
数据库 时间:
2018-08-11 12:28:45
阅读次数:
213
长时间来一直以为在读多写少的场景下,读写锁性能必然优于互斥锁,然而情况恰恰相反 不废话了,先上一段测试代码 go run test_rwmutex_mutex.go rwmutex cost: 22.403487195s mutex cost: 21.636404963s go run test_r ...
分类:
其他好文 时间:
2018-08-10 21:27:37
阅读次数:
169
Java 5.0 提供的新的加锁机制:当内置加锁机制不适合时 , 作为一种可选择的高级功能 一个可重入的互斥锁 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。 13.1 Lock 与 ReentrantLock Lock 中实 ...
分类:
其他好文 时间:
2018-08-09 01:18:44
阅读次数:
135
GIL应该是面试的一个常考题,什么是GIL? GIL的全程是Global Interpre Lock(全局解释器锁)。 不是Python中有GIL,而是CPython中有全局解释器锁。(JPython中没有GIL) GIL是一个互斥锁,CPython在执行多线程的时候并不是线安全的,为了程序的安全性 ...
分类:
编程语言 时间:
2018-08-08 22:56:05
阅读次数:
167