最新 最热

【Go】RWMutex 源码分析

读写锁相较于互斥锁有更低的粒度,它允许并发读,因此在读操作明显多于写操作的场景下能减少锁竞争的次数,提高程序效率。

2022-10-26
2

【Go】sync.Mutex 源码分析

互斥锁的锁状态由 state 这个 32 的结构表示,这 32 位会被分成两部分:

2022-10-26
2

【Go 并发控制】上下文 Context

在 Go 服务中,往往由一个独立的 goroutine 去处理一次请求,但在这个 goroutine 中,可能会开启别的 goroutine 去执行一些具体的事务,如数据库,RPC 等,同时,这一组 goroutine 可能还需要共同访问一些特殊的值,如用户 token, 请...

2022-10-26
1

【Go】sync.atomic

这一类方法的作用是拿 addr 上的值和 old 比较,如果相等,就把 new 存储到 addr。

2022-10-26
1

什么时候用Goroutine?什么时候用Channel?

什么场景下用channel合适呢?通过全局变量加锁同步来实现通讯,并不利于多个协程对全局变量的读写操作。加锁虽然可以解决goroutine对全局变量的抢占资源问题,但是影响性能,违背了原则。总结:为了解决上述的问题,我们可以引入...

2022-10-26
1

【Golang】并发

go 程(goroutine)是 go 并发的核心,它比线程要更小, 由 go Runtime 管理,运行 goroutine 只需要很少的栈空间,因此可以实现很大的并发量,在 go 中,开启一个 goroutine 只需要使用 go 关键字即可:...

2022-10-26
1

Go gin框架封装中间件之2:操作日志中间件

‍需求说明管理后台所有修改,添加,删除的操作都要记录操作日志的统计不影响主程序的性能需求分析把相关代码封装成中间件,独立使用合理使用goroutine,不影响主线程的性能文档说明基于golang语言开发基于gin网络框架开发基...

2022-10-26
1

你用Go写过中间件吗?带你用Gin实现【用户角色权限管理中间件】

下一章封装管理后台的操作日志管理:以中间件+goroutine的方式保存管理员的操作日志

2022-10-26
1

Go语言中有没有结构化并发?

什么是结构化并发?日常开发中我们编写的最多就是多线程程序,服务器端应用更是如此,传统的方式都是依靠着操作系统提供的1:1线程方式进行请求处理这对于管理和复用线程有很多挑战,如果一个普通线程大小2MB那么开启1000个线...

2022-09-15
2

go 中其实不复杂的 timer

在 go 中当我们需要延迟一段时间后执行,或者需要间隔固定时间去执行某个行为的时候就需要使用到 timer,那么 timer 到底是如何实现的呢?我们今天就来看看 timer 里面是什么样的。...

2022-09-01
1