并发编程指南

     

优步爆Go语言容易发生的数据并发争夺问题

1769 1 4K

Uber已经采用Golang(简称Go)作为开发微服务的主要编程语言。我们的Go monorepo由大约5000万行代码组成(还在增长),包含大约2100个独特的Go服务(还在增长)。Go使并发性成为.

Python的django无锁并发处理

932

并发性不是很直观的。你需要训练你的大脑来考虑当多个进程同时执行某个代码块时会发生什么。我经常遇到的问题有几个。未能识别潜在的并发性问题。无论是初学者还是经验丰富的开发者,完全错过潜在的并发问题是很常见.

Java可扩展的读写锁 - puzpuzpuz

740

锁或互斥体(互斥)是最基本的并发原语之一。很难找到一个无法解释互斥锁的开发人员,至少在基本层面上是这样。然而,互斥锁远不止这些。他们可能是: 操作系统级(想想,一个 pthread 互斥锁)或用户级(.

Loom会造成CPU密集型线程的不公平调度

1268 1

Project Loom ( JEP 425 ) 可能是 Java 有史以来最受期待的新增功能之一。它对虚拟线程(或“绿色线程”)的实现保证了开发人员能够创建高度并发的应用程序,例如具有数十万个打开的.

JEP 428:针对JDK 19提出的结构化并发

1332

Java开发人员通过将任务分解为多个子任务来管理复杂性。在普通的单线程代码中,子任务按顺序执行。但是,如果子任务彼此足够独立,并且有足够的硬件资源,则可以通过并发执行子任务来使任务运行得更快(延迟更低.

Go和C语言的32 位的无锁、并发、通用队列的源码

880

在考虑并发队列设计时,我想到了一个通用的、无锁的队列,它适合于32位整数。这个队列是 "通用 "的,因为一个单一的实现支持任何任意类型的元素,尽管它是用C语言实现的。它是无锁的,因为它保证了全系统的进.

用Java 19实现类似Go并发 - mccue

1116 2

线程通常很昂贵:操作系统没有办法准确知道一个线程需要多少堆栈空间,所以它分配的数量大约是一兆字节。解决这个问题的方法是实现一种机制,即利用有限数量的操作系统线程,并在其之上处理大量的 "逻辑线程"。对.

project-loom-c5m:用Project Loom虚拟线程实现500万长连接的实验

1311 2 2K

5,000,000 个持久连接,200,000,000 条消息,使用 Project Loom 的单个进程出现 0 个错误。Project Loom C5M 是一个使用OpenJDK Project .

Java中实现1,000,000个并发连接

817 1

WhatsApp和Phoenix已经展示了数以百万计的连接在监听一个单一端口。那么,基于TCP/IP协议的理论上的可能性是什么?任何人都可以在自己的机器上运行一个简单的Java实验。Java实验内容点.

Project Loom EA抢先体验版本发布

839 1 3K

Build 19-loom+5-429 (2022/4/4):此构建基于 JDK 19的不完整版本。与之前的版本相比,没有任何API变化。有很多 有很多变化,特别是在GC和运行时领域有很多变化,有几个.

Go 1.19将拥有更快的竞争争夺检测器

990

Go 1.19 将拥有更快的race detector! 无限数量的 goroutine.运行类似命令即可:$ go test -racerace: 超过了同时存活goroutines限制8128,d.

Project Loom带来Java并发模型革命? - infoworld

1569 2

Project Loom是Java/JVM 生态系统(由OpenJDK托管)中的一个较新的项目,它试图解决传统并发模型中的限制。特别是,Loom 提供了一种更轻量的线程替代方案以及用于管理线程的新语言.

使用Loom创建虚拟线程 - david

1313 1 4K

在这篇文章中,我们展示如何使用Loom实现类似Go语言的绿色虚拟线程。Project loom 仍处于预览阶段,这意味着 api 可能随时更改。如果您想自己尝试这些示例,可使用Early-access.

在Golang中实现Actor模型的源码 - Gaurav

2839 8K

Actor模型是一种这样的编程结构,它对大量独立作业进行建模,以任何顺序进行处理,无需锁同步。如Java中Play!框架。在本文中,我将描述如何在 golang 中实现一个原始的 Actor 模型。我.

Rust的async-await:协作调度 vs 抢占调度

1268

线程是为了并行化计算密集型任务。然而,如今,许多应用程序都是 I/O(输入/输出)密集型应用程序。这样,线程就有两个重大问题: 他们使用大量(与其他解决方案相比)内存 启动和上下文切换的成本可以在大量.