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

食品网站建设方案北京seo网站推广

食品网站建设方案,北京seo网站推广,佳木斯网站建设,win系统和mac那个做网站好简介 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.dtcms.com/wzjs/280870.html

相关文章:

  • 重庆网站建设公司招聘百度学术官网论文查重免费
  • wordpress仿站佛山网站优化服务
  • 云南做企业网站多少钱广告联盟怎么做
  • 怎么做彩票网站代理南京seo培训
  • b2c网站开发策划旅游企业seo官网分析报告
  • 微信文章 图片 wordpress株洲seo优化哪家好
  • 自己做网站兼职商品促销活动策划方案
  • 草拟一份网络推广方案南宁seo全网营销
  • 建站平台 做网站2021年度关键词有哪些
  • python的基本语法seo广告优化
  • 湖北省建设厅网站资质在线seo优化
  • 微信模板编辑器安徽seo网络优化师
  • php用什么工具做网站谷歌关键词搜索量数据查询
  • 创新的中小型网站建设软文发稿平台
  • 专业网站优化软件新闻头条今日新闻下载
  • 下列哪些不属于企业网站建设基本原则seo推广思路
  • 管理网站建设百度百度一下就知道
  • 可以做微信公众号封面的网站网站内部seo优化包括
  • 做网站对程序员说那些需求b2b电子商务平台网站
  • 如何查询网站空间大小企业网站的网络营销功能
  • 学校网站建设内容设计网盘网页版登录入口
  • 企业如何进行网站备案世界杯排名
  • wordpress4.7下载优化 英语
  • 青海政府网站建设公司seo搜索引擎优化工具
  • 国外网站建设公司网络营销工作内容
  • 北京朝阳区网站建设公司网络营销网
  • 做三国mod的网站微指数
  • 天津建设招标网站首页百度关键词seo公司
  • 大连网站哪家做的好seo确定关键词
  • 网站数据库如何做外链优化