关于Mutex问题

来源:1-9 神奇的内置数据结构

东泽XD

2021-06-08 20:18:15

在网上看到一些文章与视频的描述有些不解


Q1:对于唤醒标识mutexWoken,“当前goroutine持有唤醒标识”是指当前goroutine所在的栈中

`awoke`临时变量为true或是`new`临时变量的mutexWoken位为1么?


Q2:对于唤醒标识mutexWoken,“当前goroutine都不再是被唤醒的goroutine”,goroutine是被谁唤醒的?如果当前执行goroutine不是从mutex的阻塞队列中来的而是新来的、直接进行自旋的goroutine的话,那是不是“当前goroutine都不再是醒着的goroutine”更合语境?


PS:问的地方有不对的请指正下谢谢=。。=

PPS:疑问出处https://www.bilibili.com/video/BV15V411n7fM?p=3

03:21“当前goroutine都不再是被唤醒的goroutine”,03:04 “当前goroutine持有唤醒标识”,

写回答

1回答

Xargin

2021-06-12

Q1:对于唤醒标识mutexWoken,“当前goroutine持有唤醒标识”是指当前goroutine所在的栈中

`awoke`临时变量为true或是`new`临时变量的mutexWoken位为1么?

我个人感觉他说的是指当前的 goroutine 把 mutexWoken 置一成功,就算是持有了。


Q2:对于唤醒标识mutexWoken,“当前goroutine都不再是被唤醒的goroutine”,goroutine是被谁唤醒的?如果当前执行goroutine不是从mutex的阻塞队列中来的而是新来的、直接进行自旋的goroutine的话,那是不是“当前goroutine都不再是醒着的goroutine”更合语境?

goroutine 唤醒主要是 unlock 流程~

“当前goroutine都不再是醒着的goroutine”

这里释放标识是因为当前的 goroutine 已经上锁或者进队列了,这时候需要能让别人去抢这个 mutexWoken 标识位。她视频里说的因为所以我觉得比较牵强

PS:问的地方有不对的请指正下谢谢=。。=

PPS:疑问出处https://www.bilibili.com/video/BV15V411n7fM?p=3

03:21“当前goroutine都不再是被唤醒的goroutine”,03:04 “当前goroutine持有唤醒标识”,


0

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程

相似问题