技术栈
goroutine
凡尘——雨落凡尘
12 天前
go语言
·
channel
·
goroutine
·
sync.mutex
Go语言线上踩坑复盘:本地稳如泰山,上线频繁宕机、协程泄露、CPU爆满
Go语言线上踩坑复盘:本地稳如泰山,上线频繁宕机、协程泄露、CPU爆满 前言 Go 语言以高性能、高并发、简洁、低资源占用著称,现在大量用于微服务、网关、消息队列、爬虫、后端核心服务。 很多开发者觉得 Go 自带 GC、自带协程、语法简单,不容易出线上问题。 但真实生产环境恰恰相反:Go 的线上隐性故障非常多,且极难排查。 本地开发、测试环境永远正常,一上线就出现:
名字还没想好☜
15 天前
java
·
数据库
·
golang
·
go
·
goroutine
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
你写了一个经典的「干活 or 超时」循环,跑一段时间发现内存慢慢涨、GC 越来越频繁,pprof 一看全是 time.Timer 对象堆着不释放。代码看着人畜无害:
虎妞0500
2 个月前
后端
·
go语言
·
并发编程
·
gmp
·
goroutine
Go 语言并发模型深度解析:GMP 与实战模式
不要通过共享内存来通信,而应通过通信来共享内存。Go 通过 CSP 模型实现并发。每个 P 维护本地 G 队列,工作窃取机制让空闲 P 从其他 P 偷 G。
AMoon丶
5 个月前
linux
·
开发语言
·
后端
·
golang
·
go
·
协程
·
goroutine
Golang--协程调度
bilibili在程序地址空间的数据段中有重要的全局变量:g0和m0中都分别记录了对方的地址,m0最开始的执行的协程就是g0。
资深web全栈开发
7 个月前
服务器
·
http
·
golang
·
系统设计
·
goroutine
·
高并发架构
·
go并发
高并发的本质:超越语言的协作哲学——以 Go HTTP 服务器为例
核心观点: 高并发不是"技术选型"问题,而是"角色协作"问题。无论 Go、Rust 还是 Java,底层都在解决同一个物理学难题:如何让有限的 CPU 核心,公平且高效地服务无限增长的并发请求?
源代码•宸
7 个月前
服务器
·
开发语言
·
后端
·
算法
·
golang
·
channel
·
goroutine
Golang语法进阶(并发概述、Goroutine、Channel)
谈到并发或者并行一个绕不开的话题就是进程和线程,弄清楚进程与线程的本质是并发编程的前提,那么究竟什么是进程,什么是线程呢?
williamdsy
10 个月前
golang
·
goroutine
【Go 语言】揭秘 Go 语言的并发魔法:Goroutine 入门指南
你是否曾经编写过一个程序,当它在等待网络响应或读取大文件时,整个应用就卡在那里一动不动?或者你是否想让程序同时处理多个任务,却被传统线程编程的复杂性和高昂开销吓退?
静谧之心
1 年前
开发语言
·
golang
·
channel
·
工程化
·
goroutine
Go 工程化全景:从目录结构到生命周期的完整服务框架
今天天气很好, 正好手头有个小项目, 整理了一下中小项目标准化的痛点问题, 如下, 希望可以帮到大家. 一个成熟的 Go 项目不仅需要清晰的代码组织,还需要完善的生命周期管理。本文将详细讲解生产级 Go 服务的目录设计(包含 model 等核心目录)、组件初始化流程与优雅退出机制,帮助你构建结构清晰、可靠性高的服务框架。
0x派大星
2 年前
开发语言
·
后端
·
golang
·
go
·
goroutine
Golang 并发编程入门:Goroutine 简介与基础用法
Goroutine 是 Golang 中的一种轻量级线程,用于实现并发操作。与传统线程相比,Goroutine 的优势在于它具有更低的资源消耗和更高的效率。每个 Goroutine 在运行时被 Go 的调度器(Scheduler)管理,并且它们共享内存空间。这使得在单个系统线程上运行成千上万个 Goroutine 成为可能。
GoppViper
2 年前
笔记
·
后端
·
学习
·
golang
·
编程语言
·
goroutine
·
golang并发
golang学习笔记11——Go 语言的并发与同步实现详解
在现代软件开发中,并发和同步是非常重要的概念。Go 语言以其简洁高效的并发模型而备受关注。本文将详细介绍 Go 语言中并发与同步的实现方式,并结合代码示例进行深入讲解。
cui_win
2 年前
开发语言
·
后端
·
golang
·
context
·
goroutine
·
gorouting任务取消
Golang并发编程-协程goroutine任务取消(Context)
在实际的业务种,我们可能会有这么一种场景:需要我们主动的通知某一个goroutine结束。比如我们开启一个后台goroutine一直做事情,比如监控,现在不需要了,就需要通知这个监控goroutine结束,不然它会一直跑,就泄漏了。
cui_win
2 年前
开发语言
·
golang
·
案例
·
goroutine
·
waitgroup
Golang并发编程-协程goroutine初体验
学习Golang一段时间了,一直没有使用过goroutine来提高程序执行效率,在一些特殊场景下,还是有必须开启协程提升体验的,打算整理几篇关于协程的原理的文章和案例,结合工作场景将协程使用起来。
飞翔码农
2 年前
golang
·
goroutine
golang开发 深入理解 context
context包在Go 1.7版本正式加入Go标准库。在加入之前我们看看Go团队核心成员Sameer Ajmani在2014年发表的一篇关于context介绍博客,地址:https://go.dev/blog/context 下面是介绍的翻译。
两片空白
2 年前
golang
·
goroutine
Go——Goroutine介绍
进程和线程并发和并行协程和线程goroutine只是由官方实现的超级“线程池”。每个实际4~5KB的栈内存占用和由于实现机制而大幅减少的创建和销毁开销是go高并发的根本原因。
许野平
2 年前
纤程
·
协程
·
goroutine
协程、纤程会利用多核CPU的并行计算优势吗?
协程和纤程(微线程)主要是运行在单线程中的轻量级并发机制。它们的主要优势在于能够在单个线程内高效地处理并发任务,通过自动切换来避免线程切换的开销,从而提高了执行效率。
飞翔码农
2 年前
golang
·
goroutine
golang开发_goroutine在项目中的使用姿势
很多初级的Gopher在学习了goroutine之后,在项目中其实使用率不高,尤其一些跨语言过来的人,对并发编程理解不深入,可能很多人只知道go func(),或者掌控不够,谨慎一些,尽量少使用或者不使用,用的话就是go func(),主要列一下我们这边的主要使用方法。
梦想与想象-广州大智汇
3 年前
go
·
协程
·
goroutine
·
chanel
·
recover
Go语言协程使用
子协程没有打印输出 原因:主和子协程各执行各的,当主协程执行完go语句就退出,并不会等待子协程执行完成
大白说
3 年前
golang
·
并发
·
协程
·
gmp
·
goroutine
golang的大杀器协程goroutine
在Golang中,协程(Goroutine)是轻量级的执行单元,用于实现并发编程。它是Golang语言的重要组成部分,提供了简洁、高效的方式来处理并发任务。
灯火消逝的码头
3 年前
golang
·
go
·
协程
·
goroutine
Go 并发编程 - runtime 协程调度(三)
Go runtime 可以形象的理解为 Go 程序运行时的环境,类似于 JVM。不同于 JVM 的是,Go 的 runtime 与业务程序直接打包在一块,是一个可执行文件,直接运行在操作系统上,效率很高。
灯火消逝的码头
3 年前
golang
·
协程
·
channel
·
goroutine
Go 并发编程 - 并发安全(二)
并发情况下,多个线程或协程会同时操作同一个资源,例如变量、数据结构、文件等。如果不保证并发安全,就可能导致数据竞争、脏读、脏写、死锁、活锁、饥饿等一系列并发问题,产生重大的安全隐患,比如12306抢到同一张火车票、多个用户抢到只剩一件库存的商品。而并发安全就是为了避免这些问题。Golang 中有一些原则和工具来保证并发安全,例如: