首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
有锁专题
【crossbeam系列】1有锁并发、无锁并发和crossbeam极简介
随着计算机硬件和软件的发展,个人计算机里动辄几千几万线程已经成为家常便饭。而在程序中大量使用并发也成为了一个主流,因为这样的程序有更小的延迟,并且对多核CPU也有更充分的利用。 有锁并发 对于大多数程序员(当然我也基本上是其中一员),并发编程几乎就等价于给相关数据结构加上一个锁(Mutex)。比如如果我们需要一个支持并发的栈,那最简单的方法就是给一个单线程的栈加上锁std::sync::Mute
阅读更多...
锁/线程/为什么项目中代码很少有锁的出现
CountDownLatch的await,countDown与notify,wait等区别??? 因为堆和方法区是被所有线程共享的,因此java程序需要为多线程访问的这两类数据进行协调。保存在堆中的实例变量和保存在方法区中的类变量。虚拟机为每一个对象和类都关联一个锁,类锁实际上是对象锁实现,锁住一个类的时候实际上锁的是那个类的Class实例对象。 java中可以使用 synchronized
阅读更多...
分配式调度器(Allocation Scheduler)-有锁与无锁实现
原文转自:http://www.tanjp.com (即时修正和更新) 分配式调度器(Allocation Scheduler) N个业务系统生产作业加入到 1个分配队列里面,由 1个分配线程负责将队列中作业分配给 M个工作队列,每个工作队列对应 1个工作线程来消费作业。对分配队列的抢占为:N*1,对工作队列的抢占为1*1,也就是说总体队列的抢占为 N*1+1*1*M,也就是 N+M。 分配
阅读更多...
抢占式调度器(Preemptive Scheduler)-有锁与无锁实现
原文转自:http://www.tanjp.com (即时修正和更新) 抢占式调度器(Preemptive Scheduler) N个业务系统生产作业加入到一个队列里面,队列中的作业被 M个线程抢先消费。也就是说,N的业务系统抢着把生产出来的作业插入到队列,同时 M个线程抢着消费该队列的作业,对队列的抢占非常激烈。可简单竞争抽象为: N*M。 push
阅读更多...