并发安全

只是懒得想了8 天前
开发语言·数据库·golang·go·并发安全
用Go通道实现并发安全队列:从基础到最佳实践在高并发系统中,如何安全地共享和操作数据结构是一个核心挑战。虽然sync.Mutex或atomic包能解决大部分问题,但在Go语言生态中,更“地道”的做法是用通道(Channel)实现并发安全的数据结构——比如队列。本文将深入探讨如何用通道构建一个高性能、无锁、并发安全的队列,并扩展讨论其与限流器、工作池等模式的关联。
小楼v15 天前
java·后端·线程·并发安全
常见的java线程并发安全问题八股synchronized采用互斥的方式让同一时刻只有一个线程持有这个对象锁,它的底层是由jvm提供的monitor实现的,线程获得锁后会关联monitor,然后monitor内有三个属性owner、entryList、waitSet,如果owner为null,那线程就会正常执行,如果owner不为null,线程就会进入entryList阻塞,只有当拿到锁的线程释放锁后,阻塞中的这些线程才会去争抢owner,如果waitSet关联就是有调用wait()方法处于waiting状态。
superman超哥1 个月前
开发语言·后端·rust·编程语言·并发安全·send与sync·rust线程
Rust 线程安全性保证(Send 与 Sync):编译期并发安全的类型系统并发编程中最棘手的问题是数据竞争和线程安全——多个线程同时访问共享数据,至少一个进行写入,且没有同步机制。传统语言依赖程序员的谨慎和运行时检测,导致难以发现的 bug 和生产环境崩溃。Rust 通过类型系统在编译期解决这个问题,引入了两个自动派生的 marker trait:Send 和 Sync。Send 表示类型的所有权可以在线程间转移,Sync 表示类型可以被多个线程同时不可变地访问。这两个 trait 不包含任何方法,纯粹是编译器的标记,用于静态检查线程安全性。编译器自动为大多数类型实现它们,但对
啊Q老师3 个月前
rust·并发安全·异步编程·深度实践
Rust:异步编程与并发安全的深度实践在前文对 Rust Trait 抽象、泛型编程、unsafe 底层控制的解读基础上,Rust 生态中另一套重塑 “高性能服务开发” 的核心技术体系——异步编程模型与并发安全进阶机制,尚未被充分挖掘。不同于其他语言(如 Go 的 Goroutine、Node.js 的单线程事件循环),Rust 异步编程以 “零成本抽象” 为核心设计,通过 Future 特质与轻量级执行器实现高效任务调度;而其并发安全工具链(如 RwLock、CancellationToken、broadcast 通道)则进一步解决了 “高
Xxtaoaooo3 个月前
rust·源码分析·高性能·并发安全·actix-web
Rust Actix-web框架源码解析:基于Actor模型的高性能Web开发人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。———— 马尔科姆·格拉德威尔
无休居士1 年前
并发安全·幂等性
接口幂等性和并发安全的区别?接口幂等性和并发安全是两个不同的概念,虽然它们在设计API时都很重要,但侧重点不同。定义:幂等性指的是无论对接口进行多少次相同的操作,结果都是一致的。例如,HTTP的PUT和DELETE方法通常被视为幂等的,因为多次调用不会改变系统的最终状态。
当年拼却醉颜红2 年前
数据库·性能优化·并发安全
并发安全问题之--事物失效问题事物失效常见的6种原因: 1、事物方法非public修饰 2、非事物方法调用事物方法 3、事物方法抛出的异常被捕获了 4、事物方法抛出的异常类型不对 5、事物传播行为不对(事物发生嵌套时有事物传播) 6、事物锁属类没有被spring管理
当年拼却醉颜红2 年前
乐观锁·并发安全·锁失效·锁边界
并发安全问题之--锁失效和锁边界问题此处为新增insert无法在SQL中通过数量限制(除非插入SQL中有子查询),上面改进的乐观锁失效(前一节的乐观锁适合修改数据)
当年拼却醉颜红2 年前
java·乐观锁·并发安全·超卖
并发安全问题之超卖问题优点:不加锁性能好。 缺点:同时请求成功率低(即只要发现数据变了就放弃了)。 乐观锁思想的具体体现:一共两步,第一步,先查询状态。第二步,再更新数据时必须where等于前面的状态,确保数据没有改变。 第二步集查询和操作数据于一身具有原子性。
我是有底线的