1. 首页
  2. 编程语言
  3. 其他
  4. 一文读懂go中semaphore(信号量)源码

一文读懂go中semaphore(信号量)源码

上传者: 2022-03-13 13:33:17上传 PDF文件 166.65 KB 热度 9次

运行时信号量机制 semaphore前言最近在看源码,发现好多地方用到了这个本文是在作用是什么下面是官方的描述上面提到了和futex是一个在Linux上实现锁定和构建高级抽象锁如信号量和POSIX互斥的基本工具Futex 由一块能够被多个进程共享的内存空间组成;这个整型变量的值能够通过汇编语言调用CPU提供的原子操作指令来增加或减少,并且一个进程可以等待直到那个值变成正数。Futex 的操作几乎全部在用户空间完成;只有当操作结果不一致从而需要仲裁时,才需要进入操作系统内核空间执行。当 M1 上的 G1 执行到 semacquire1 时,如果快速路径成功,则说明 G1 抢到锁,能够继续执行。但一旦失败且在慢速路径下 依然抢不到锁,则会进入 goparkunlock,将当前的 G1 放到等待队列中,进而让 M1 切换并执行其他 G。

下载地址
用户评论