Golang 语言标准库 sync/atomic 包原子操作
01介绍我们已经介绍过 Mutex、RWMutex 等并发原语操作,如果您还没有阅读,请查看文末「推荐阅读」列表。本文我们介绍 sync/atomic 包提供的原子操作的方法,相比并发原语操作,使用原子操作会更轻量。我们知道,相同代码在不同 CPU 架构中编译的结果可能不同,sync/atomic 包提供的原子操作的方法帮我们解决了这个问题,所以如果您想保证原子操作,一定要使用 sync/ato....
Golang 语言使用标准库 net/rpc/jsonrpc 包跨语言远程调用
01介绍Go 语言标准库 net/rpc 默认采用 encoding/gob 包编解码传输数据,gob 编解码方式仅适用于 Go 应用,如果需要跨语言远程调用,可以指定支持跨语言的其他编解码方式,比如 protobuf,或使用 net/rpc 的子包 net/rpc/jsonrpc,它支持JSON-RPC 1.0,通过 json 格式传输数据。02Go 语言 net/rpc/jsonrpc 标准....
Golang语言标准库 sync 包的 Once 怎么使用?
01介绍在 Go 语言中,sync 包有一个 Once 类型,官方文档介绍 Once 是一个只执行一次操作的对象。所以,Once 一般用于并发执行,但只需初始化一次的共享资源。02基本用法Once 的使用也非常简单,Once 只有一个 Do 方法,接收一个无参数无返回值的函数类型的参数 f,不管调用多少次 Do 方法,参数 f 只在第一次调用 Do 方法时执行。代码示例:通过阅读示例代码,可以发....
Golang语言标准库 sync 包的 Cond 怎么使用?
01介绍在 Go 语言中,Cond 实现一个条件变量,协助解决等待或通知事件场景的并发执行问题,通常用于等待某个条件的一组 goroutine。这个条件需要一组 goroutine 共同协作完成,如果条件为 false,所有等待这个条件的 goroutine 将会被阻塞,当这个条件变为 true 时,所有等待这个条件的其中一个 goroutine 或者所有 goroutine 会被唤醒。02基本....
Golang语言标准库 sync 包的 WaitGroup 怎么使用?
01介绍在 Go 语言中,标准库 sync 包的 WaitGroup 用于父线程(goroutine)等待一组子线程(goroutine)结束,如果正在执行的一组子线程还没有全部结束,父线程阻塞在检查点,直到所有子线程全部结束才可以继续执行。02基本使用WaitGroup 提供了 3 个方法,Add、Done 和 Wait,下面分别介绍一下这 3 个方法:Add(delta int):用于设置 ....
Golang 语言标准库 sync 包的 RWMutex 读写互斥锁怎么使用?
01介绍Mutex 互斥锁严格锁定读和写,这在读多写少的场景,未免显得有些「浪费」,在 Go 语言中,sync 包中的 RWMutex 类型可以解决这类问题,RWMutex 是基于 Mutex 实现的,RWMutex 是读写(reader/writer)互斥锁,RWMutex 在某一特定时间内,只能由若干 reader(读操作) 持有锁或只能由单个 writer(写操作) 持有锁。例如,如果某个....
go-carbon 2.2.9 版本发布, 轻量级、语义化、对开发者友好的 Golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于等于1.16 // 使用 g...
golang使用resty库实现模拟请求正方教务
resty库介绍 resty是Go语言中的一个流行的HTTP客户端库,主要特征有: 简单的API接口,易于上手使用。 支持设置请求头、查询参数、表单数据、JSON数据等。 支持同步和异步两种请求方式。 支持重试请求、追踪请求、设置超时、绑定请求上下文等功能。 默认启用了KeepAlive,可以重用TCP连接提高效率。 支持中间件,可以针对请求和响应进行自定义处理。 轻量级设计...
go-carbon 2.2.8 版本发布, 轻量级、语义化、对开发者友好的 Golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于等于1.16 // 使用 g...
go-carbon 2.2.7 版本发布, 轻量级、语义化、对开发者友好的Golang时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于等于1.16 // 使用 g...
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。