关于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回答
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持有唤醒标识”,
相似问题