AxisZql’s blog
首页
搜索
归档
Reading List
留言
友情链接
随笔
axiszql
文章
29
分类
7
标签
51
Reading List
留言
友情链接
随笔
归档
搜索
分类
标签
学习思考
🏏实现Golang可重入锁
发布于: 2023-1-10
最后更新: 2023-1-10
次查看
Golang
并发编程
category
type
status
date
slug
summary
tags
password
Property
Jan 10, 2023 03:32 AM
icon

前言

Golang中的Mutex是不能复制的,因为每个Mutex中都有一个state字段记录当前的加锁情况,如果复制了Mutex后,其值不是从零值开始,容易引发异常。 Mutex,不支持可重入操作,这对想要在获取锁的goroutine中执行递归操作是非常不方便的,所以本文介绍了两种实现Golang可重入锁的方法。

根据goroutine id实现可重入锁

goid:是一个可以获取当前goroutine id的开源轮子
GitHub - petermattis/goid
You can't perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.
GitHub - petermattis/goid
http://github.com/petermattis/goid
GitHub - petermattis/goid

根据goroutine 生成token实现可重入锁

  • 作者:axiszql
  • 链接:https://axiszql.com/article/golang-mutex-recursive
  • 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章
Golang异常处理
常见算法
Golang Learning
使用Docker compose部署es集群及kibana的使用低代码平台:腾讯微搭,自定义APIs的常规使用流程
Loading...
目录
0%
前言根据goroutine id实现可重入锁根据goroutine 生成token实现可重入锁
axiszql
axiszql
向往Rust、C++和Go的家伙!🐧
文章
29
分类
7
标签
51
最新发布
《Rust Course》 learning Not
《Rust Course》 learning Not
2025-4-3
Algorithm Note
Algorithm Note
2025-4-3
Vscode-NeoVim、WLS2 Vim /NeoVim、Goland+Vim使用技巧
Vscode-NeoVim、WLS2 Vim /NeoVim、Goland+Vim使用技巧
2025-3-16
Windows 开发环境下的疑难杂症
Windows 开发环境下的疑难杂症
2025-3-16
C++开发常用技巧
C++开发常用技巧
2024-10-4
集成Gitlab CI/CD、Docker、Kubernetes来实现流水线部署
集成Gitlab CI/CD、Docker、Kubernetes来实现流水线部署
2024-9-10
目录
0%
前言根据goroutine id实现可重入锁根据goroutine 生成token实现可重入锁
2022-2025axiszql.

AxisZql’s blog | 向往Rust、C++和Go的家伙!🐧

Powered byNotionNext 4.7.7.