并发编程 共 105 篇文章

Rust 异步:async/await 与 futures
2026-04-09 17:19:18
Rust 异步:async/await 与 futures 编写异步代码时,async/await 是 Rust 提供的核心机制,它能以同步风格的语法实现高效的并发操作。本文将带你掌握这一工具,从基础概念到实际应用。 理解异步编程基础 创建异步函数最简单的方式是使用 async fn 关键字。这样的
Rust异步 async/await futures
77 0
Java 内存模型:JVM 内存结构与 GC 算法
2026-04-08 17:28:19
Java内存模型:JVM内存结构与GC算法 一、Java内存模型概述 理解 Java内存模型Java Memory Model, JMM是Java虚拟机规范中定义的一组规则,它规定了线程如何以及何时可以看到其他线程共享变量的修改,以及如何同步访问共享变量。 区分 Java内存模型与JVM内存结构是两
Java内存模型 JVM内存结构 内存区域
68 0
Java volatile关键字保证可见性的底层原理
2026-04-08 13:23:29
Java volatile关键字保证可见性的底层原理 在并发编程中,volatile 关键字是Java虚拟机提供的轻量级同步机制。它主要用于确保多个线程能够正确感知到共享变量的修改。理解其原理需要从Java内存模型(JMM)逐步下沉到CPU硬件层面。以下将按步骤深度解析其底层运作机制。 1. 理解
volatile 并发编程 Java内存模型
74 0
Go语言 原子操作Atomic在计数器中的应用
2026-04-08 06:27:57
Go语言 原子操作Atomic在计数器中的应用 在并发编程中,当多个 Goroutine 同时读写同一个变量时,会引发数据竞争。为了解决这个问题,通常可以使用互斥锁或原子操作。原子操作由底层硬件支持,执行过程不可被中断,因此在处理计数器等简单数值累加场景时,性能远优于互斥锁。 1. 复现并发安全问题
Go语言 原子操作 并发编程
70 0
Python 多进程:multiprocessing 模块与进程池
2026-04-07 04:43:07
Python 多进程:multiprocessing 模块与进程池 Python 的 multiprocessing 模块用于绕过全局解释器锁(GIL)的限制,充分利用 计算机的多核 CPU 性能。本文提供从零到一的实操指南,指导你完成进程创建、数据通信、任务池管理及安全执行。 第一阶段:创建与启动
Python 多进程 进程池
69 0
C++ 多线程:std::thread 与互斥锁
2026-04-07 02:47:14
C++ 多线程:std::thread 与互斥锁 阶段一:编译环境配置与核心对象声明 1. 确认编译器支持 C++11 或更高标准。打开终端并运行 g++ version。若版本号低于 4.8.1,安装 GCC 9.0 及以上版本或升级 MSVC/Clang,旧版工具链无法识别现代线程语法。 2.
C++多线程 互斥锁 线程同步
74 0
Python 多线程:threading 模块与锁机制
2026-04-07 00:12:26
Python 多线程:threading 模块与锁机制 1. 打开 代码编辑器或集成开发环境,新建 空白文件并 保存 为 threadinglock.py。 2. 引入 标准库模块。在文件首行 输入 import threading 与 import time。threading 提供线程控制接口,
多线程 锁机制 线程同步
85 0
C++ 线程库:std::thread 与互斥锁
2026-04-06 22:13:45
C++ 线程库:std::thread 与互斥锁 阶段一:创建并启动基础线程 1. 引入 标准线程库头文件 include <thread 与基础输入输出库 include <iostream。 2. 编写 独立运行函数。定义普通函数 void workertask,在函数体内 写入 业务逻辑,例如
C++多线程 并发编程 线程同步
55 0
Python 协程任务:asyncio.create_task() 与 gather()
2026-04-06 12:16:56
Python 协程任务:asyncio.createtask 与 gather Python 的 asyncio 库通过协程实现了并发编程,但在实际开发中,如何正确调度和等待这些协程是核心难点。asyncio.createtask 和 asyncio.gather 是两个最常用的调度工具,前者负责将
Python asyncio 协程
73 0
Java 线程问题:线程死锁与线程安全
2026-04-05 23:39:53
Java 线程问题:线程死锁与线程安全 在 Java 多线程编程中,线程死锁与线程安全是两个最核心、也是最容易被忽视的问题。一旦处理不当,你的程序可能会陷入无限等待,或者出现数据错乱、崩溃等严重故障。这篇文章将用最直白的方式,帮你彻底理解这两个问题的本质,并掌握实际的解决方法。 一、线程死锁:程序永
Java多线程 线程死锁 线程安全
56 0
Go 上下文:context 包与取消操作
2026-04-05 19:41:42
Go 上下文:context 包与取消操作 在 Go 语言中,context 是一个看似简单却蕴含深意的标准库包。它解决的问题非常明确:如何在 goroutine 之间传递取消信号、截止时间以及请求作用域内的值。 当一个请求到达服务器,服务器可能需要启动多个 goroutine 来处理不同的子任务。
Go语言 context 并发编程
67 0
Python 异步IO:aiohttp 与 asyncio 结合
2026-04-05 16:38:48
Python 异步 IO:aiohttp 与 asyncio 结合 现代 Web 应用对并发处理能力的要求越来越高。传统的同步编程模型在处理大量 I/O 操作时,往往会让程序陷入"等待"的困境——CPU 明明在空转,却只能眼巴巴地等着网络请求返回结果。异步 IO 正是为了解决这一痛点而生,它允许程序
Python 异步IO asyncio
67 0
Clojure 并发:future 与 promise
2026-04-05 14:08:35
Clojure 并发:future 与 promise 在 Clojure 的并发工具箱中,future 和 promise 是两个看似相似却各有千秋的工具。它们都能帮助我们跳出同步执行的束缚,让程序在等待结果的同时继续处理其他任务。然而,很多开发者对它们的适用场景和关键差异感到困惑。本文将用最直接
Clojure 并发编程 异步
61 0
Erlang 并发:OTP 与 gen_server
2026-04-05 09:48:42
Erlang 并发:OTP 与 genserver Erlang 是一门为并发而生的语言。它的并发模型不同于传统的操作系统线程,而是一种轻量级的"Actor 模式"——每个进程都有独立的内存空间,进程之间通过消息传递通信。这种设计让 Erlang 程序天然具备高容错、高可扩展的特性。 OTP(Ope
Erlang OTP框架 gen_server
68 0
Go 选择语句:select 与超时处理
2026-04-05 04:56:34
Go 选择语句:select 与超时处理 在 Go 并发编程中,select 语句是协调多个信道操作的核心工具。它能够让程序同时监听多个信道的状态,在任意一个信道就绪时执行对应分支。这种机制特别适合处理超时、取消操作和资源竞争等场景。 select 语句基础 select 语句的语法与 switch
Go语言 select语句 并发编程
59 0
Go 并发问题:goroutine 泄漏与通道阻塞
2026-04-04 20:58:01
Go 并发问题:goroutine 泄漏与通道阻塞 Go 的 goroutine 以其轻量级和高效著称,但正因如此,某些问题往往难以察觉。goroutine 泄漏和通道阻塞是 Go 并发编程中最常见也最具欺骗性的问题。它们不会让程序立即崩溃,而是悄悄消耗内存和 CPU,最终拖垮整个应用。 理解 go
Go并发 goroutine泄漏 通道阻塞
59 0
Go语言 通道Channel的缓冲与无缓冲区别
2026-04-04 03:47:09
Go语言 通道Channel的缓冲与无缓冲区别 Go语言中的通道(channel)是协程(goroutine)之间通信的核心机制。理解通道的缓冲与无缓冲特性,是编写高效、正确并发程序的关键。 1. 创建无缓冲通道 声明一个无缓冲通道的方式如下: go ch := makechan int 这行代码创
Go语言 通道 缓冲通道
75 0
Go 原子操作:sync/atomic 包的使用
2026-04-04 00:40:49
Go 原子操作:sync/atomic 包的使用 在并发编程中,多个 goroutine 同时读写同一个变量时,如果不加保护,会导致数据竞争(data race),产生不可预测的结果。Go 提供了 sync/atomic 包,用于实现对基本类型(如整数、指针)的无锁原子操作。这些操作由 CPU 指令
Go 并发编程 原子操作
66 0
Go 并发编程:goroutine 与 channel
2026-04-03 18:18:18
Go 并发编程:goroutine 与 channel Go 语言的并发模型基于两个核心概念:goroutine 和 channel。goroutine 是轻量级线程,由 Go 运行时自动管理;channel 是 goroutine 之间通信的管道,用于安全地传递数据。掌握这两者,就能高效编写并发程
Go 并发编程 goroutine
62 0
Go语言Select语句在超时控制中的实现模式
2026-04-02 22:36:33
Go语言Select语句在超时控制中的实现模式 Go语言通过select语句实现对多个通道(channel)操作的监听,是并发编程中处理异步事件的核心机制。其中一种高频应用场景是为操作设置超时限制,防止程序无限等待。这种模式简洁、高效,且无需额外依赖。 基本超时控制模式 最典型的超时控制通过time
Go语言 select语句 超时控制
57 0