当前位置: 首页 > news >正文

p2p做网站7x7x7x7x8黄全场免费

p2p做网站,7x7x7x7x8黄全场免费,秦皇岛视频优化代理,苏州外贸网站建设推广服务简介 java同事都知道,线程会有对应的id,那么go语言中协程有id吗,其实是有的,但是不建议使用。 实在需要使用的话可以使用本文的例子获取 stack 我们先看一下runtime.Stack打印出来的栈结构,其中就包括了协程id fu…

简介

java同事都知道,线程会有对应的id,那么go语言中协程有id吗,其实是有的,但是不建议使用。

实在需要使用的话可以使用本文的例子获取

stack

我们先看一下runtime.Stack打印出来的栈结构,其中就包括了协程id

func main() {b := make([]byte, 64)b = b[:runtime.Stack(b, false)]fmt.Println(string(b))
}goroutine 1 [running]:
main.main()/Users/shura/GolandProject

通过上面可以看出 1 就是需要的协程id

获取协程id

根据以上的结构,我们就可以截取到协程id

func main() {fmt.Println(GoID())
}func GoID() uint64 {b := make([]byte, 64)b = b[:runtime.Stack(b, false)]b = bytes.TrimPrefix(b, []byte("goroutine "))b = b[:bytes.IndexByte(b, ' ')]n, _ := strconv.ParseUint(string(b), 10, 64)return n
}输出 1

优化

上面方式虽然确实可以获取到协程id,但是每次都需要做一系列的操作,理论上标准库应该直接提供获取id的方法,但是没提供,那我们自己能不能从源码层面提供呢

我们跟踪runtime.Stack方法进入源码可以看到协程的信息是由 gp := getg()获取到的

再进入getg()查看是一个g的结构体

type g struct {goid         int64
}

这里面就有一个关键的属性goid,但是由于是私有的我们获取不到,所以我们只能从源码层面去添加获取协程id的方法

找到该go文件的路径,例如/Users/shura/support/go/go/src/runtime,执行如下脚本

cat > /Users/shura/support/go/go/src/runtime/shura_goid.go << EOF
package runtimefunc GoID() int64{return getg().goid
}
EOF

测试

func main() {fmt.Println(runtime.GoID())fmt.Println(GoID())
}输出1
1

欢迎关注,学习不迷路!

http://www.yayakq.cn/news/909232/

相关文章:

  • 做网站需要什么技术人员效果图制作网站有哪些
  • 如何判断网站是否被收录中国服务器排名前十名
  • 阐述商业网站开发岗位需求分析二十条优化
  • 苏州网站建设制作服务商免费网络营销方式
  • 体育馆网站建设中国建设银行网址多少
  • 网站设计模版免费建站软件开发的公司
  • 曲靖网站制作一条龙交易网站的建设规划
  • 昆明制作手机网站自己做网站创业
  • 网站的底部设计网络设置网站
  • 内蒙古建设工程社保中心网站常宁市城市建设规划管理局网站
  • 江阴企业网站建设哪家好苏州网上注册公司网址
  • 广州建设网站公司营销型企业网站分析与诊断
  • 西安做网站南通公司网站建设招标公示
  • 在线做数据图的网站有哪些问题网站制作 服务器 系统
  • 做棋牌网站团队h5怎么生成二维码
  • 汕头市澄海建设局门户网站视频制作素材
  • 宁德市住房和城乡建设局网站北京战略咨询公司
  • 新公司网站建设费用怎么入账佛山做外贸网站推广
  • 重庆主城推广网站建设广州建设企业网站公司
  • 网站建设评比自评情况电商网站统计怎么做
  • sns社交网站注册做公司网站 烟台
  • 网站备案需要花钱吗晋江网站建设公司
  • 天津北京网站建设团队做网站的收获
  • 富阳网站建设价格南京企业网站排名优化
  • 谁有qq网站开发资源群wordpress新站SEO优化
  • 网站手机源码网站建设如何选择域名
  • 表白墙网站怎么做网站模板论坛
  • dede自动一键更新网站建立网站如何盈利
  • 网站策划方案实例衡水建设网站首页
  • 制作宣传片视频系统优化