并发编程模型
所属分类 architecture
浏览量 1477
临界区加互斥锁 synchronized ReentrantLock
如果并发量大,锁竞争激烈,开销大
读多写少 读写锁 ReentrantReadWriteLock
计数器 使用 atomic AtomicLong
CAS CPU原子指令 无锁结构
actor并发模型
Erlang scala akka 使用的并发模型。
一般并发线程通信有两种实现模型:共享内存和消息传递。共享内存最大的问题在于竞争,容易产生死锁等问题。
actor是一种消息传递实现并发模型,定义了actor,每个actor有一个mailbox,负责接收消息。
消息只能顺序的放到邮箱中,由actor处理
CSP模型
Golang使用CSP并发模型,与actor唯一区别是没有mailbox。使用channel进行消息传递,类似于linux的命名管道
CSP(Communicating Sequential Processes)
SMT 软件事务内存
Software transactional memory
参考数据库事务的实现,保证操作的ACID特性。通过内存日志实现对共享资源操作的原子性,commit或abort。
但由于维护日志的开销,该模型的性能要低于锁。但其优势是可以极大简化多线程编程模型,不会产生诸如死锁等问题。
银行账户转账操作,需要跨两个账户操作, 该过程的原子性可由SMT实现
上一篇
下一篇
集合遍历删除注意点
java编码规范
jvm热点线程定位
slf4j为什么用{}而不是%s
java获取系统信息
mysql MVCC 和 事务隔离级别