Dojo
话题
新佳
订阅
极道
元认知
元逻辑
元设计
元编程
元语言
同步锁竞争教程
Java中实现线程安全HashSet的几种方法 | baeldung
在本教程中,我们将了解创建线程安全HashSet实例的可能性以及HashSet的ConcurrentHashMap的等价物。此外,我们将研究每种方法的优缺点。 使用ConcurrentHashMap工厂方法的线程安全HashSet
Rust所有权与借用图示概念
Rust 中的所有权是什么?Rust没有垃圾收集器,您需要显式分配和释放内存空间。当涉及大型代码库时,这很快就会变得乏味和具有挑战性。传统上,有两种管理内存的基本方法: 第一个是垃圾收集器;它主要用于从程序员那里抽象出内存管理概念的高级语言中。 第二种
使用Redis实现微服务分布式锁
Redis 以其高性能和支持高读/写 QPS 的能力而闻名,这是作为分布式锁服务的后备存储非常理想的属性。此外,Redis 本身也支持 Lua 脚本。开源社区中有很多基于 Redis 的分布式锁的实现。总体而言,基于 Redis 的分布式锁比基于 MySQL 的分布式锁性能更高。下面我们来看
分布式事务锁模式之一:租用Lease
分布式系统中群集节点需要对某些资源的独占访问权。但是同时会造成其他节点操作崩溃;其实这些节点可以对资源实现短暂的连接然后断开,这样它们不会无限期地保持对资源的访问。应用案例: Google的
使用Go两年学到的五大经验教训 - hashnode
在本文中,我将讨论其中的一些错误以及我在未来项目中尝试减轻这些错误的经验教训。这绝不是对理想解决方案的讨论,这只是我通过使用 Go 的经验学习和发展的想法: 1. Goroutines在我看来,Go 作为一种语言非常吸引人的地方(除了
业务系统中资源争夺情况是不存在的 - udidahan
一旦你学会用业务眼光去看,就不会有任何需要用多线程同步锁实现的竞赛条件了。比方说,以下是需求。 1. 如果订单已经发货了,不要让用户取消订单。 2. 如果订单已经被取消,不要让用户运送订单。 这里的竞赛条件是当我们有两个用户在看同一个订单,这个订单既
在微服务架构中实施分布式事务锁的几个方案比较 - Prasanth Gullapalli
众所周知,锁通常用于监视和控制多个线程同时访问共享资源。它们基本上保护并发应用程序中的数据完整性和原子性,即,一次只能有一个线程可以获取共享资源上的锁,否则将无法访问该锁。但是在分布式环境中的锁定不仅仅是在多线程应用程序中的互斥锁。由于必须立即跨集群或网络中的任何节点出现故障的所有节点获取锁
使用LMAX Disruptor构建快速、线程安全的热点跟踪库
LMAX Disruptor 是 Java 中最好的库之一,用于构建具有无锁队列的有界队列。Hubspot 撰写了有关 LMAX Disruptor 如何帮助构建快速、线程安全的跟踪库的文章:HubSpot 的用例是单个进程中的多个线程需要协调以在高基数数据流中查找最频繁的项目。在这
Java并发编程如何防止死锁?
死锁可能是大家都不想遇到的问题,因为一旦程序出现死锁,如果没有外力的话,程序会因为资源竞争一直处于假死状态。死锁示例代码如下:
Java线程stop等方法被弃用(Java SE 19 & JDK 19)
Java 中Thread 一些方法被弃用:stop, suspend, resume 为什么被Thread.stop弃用?因为它本质上是不安全的。停止一个线程会导致它解锁它所锁定的所有监视器(当Thread
使用Rust为RISC-V OS 实现自旋锁
自旋锁是最基本的同步实现之一,也是实现操作系统时首先要考虑的组件之一。本文将简要回顾自旋锁的基础知识,如何在 Rust 中为自制操作系统实现它,以及它相对于 C 语言的优势。
Java中volatile副作用:不使用CPU缓存
高速缓存位于在CPU和主内存之间,是一个速度更快的内存模块,其总体目的是提升性能。缓存通常是由具有不同大小和访问时间的几个层次级别组成。L1缓存是最小和最快的。L2更大而更慢。L3更大甚至更慢-但仍然比主内存快得多。用于特定数据结构的数据量越少,将其放入高速缓存的机会就越大,从而可以
Go 1.19将拥有更快的竞争争夺检测器
Go 1.19 将拥有更快的race detector! 无限数量的 goroutine.运行类似命令即可:
Java并发编程中双重检查锁漏洞
单例模式在实际工作或面试中出现的频率更高,double-checked lock是单例常见实现:
Python的django无锁并发处理
并发性不是很直观的。你需要训练你的大脑来考虑当多个进程同时执行某个代码块时会发生什么。我经常遇到的问题有几个。 未能识别潜在的并发性问题。无论是初学者还是经验丰富的开发者,完全错过潜在的并发问题是很常见的。当这种情况发生时,并发问题最终导致bug,
Java并发编程中自旋锁会浪费 CPU 资源并导致错误
在并发编程中,自旋锁(spin locks )想必大家都不陌生。自旋锁一个非常经典的使用场景是CAS(即比较和交换),是一种无锁的思想(说白了就是使用了无限循环),用来解决更新数据的问题高并发场景。 atomic包下的很多类,如Atomic
探讨Java中的多线程概念 - foojay
解释Java编程语言中多线程的复杂性,让我们从快速概览和理解核心概念开始。 操作系统中的线程概念 线程:线程是轻量级进程,但它在多个方面与进程不同。线程的主要特征是它创建并发执行过程的感觉。它
Java可扩展的读写锁 - puzpuzpuz
锁或互斥体(互斥)是最基本的并发原语之一。很难找到一个无法解释互斥锁的开发人员,至少在基本层面上是这样。然而,互斥锁远不止这些。他们可能是: 操作系统级(想想,一个 pthread 互斥锁)或用户级(想想,一个自旋锁), 公开悲观(阻塞)或乐观(非阻塞)锁定 API,
上页
下页
关闭