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

徐州网站建设哪家好如何做自己的网站

徐州网站建设哪家好,如何做自己的网站,十大设计网站,外卖网站怎么做销量简介 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/262772.html

相关文章:

  • 西安市专业网站建设简述网站建设的流程
  • 大朗网站仿做郑州网站建设公司排行榜
  • 重庆市建设工程信息网官网公示seo模拟点击
  • 深圳网站建设潮动九州找客户的软件有哪些
  • 如何做公司的网站建设周口seo
  • 原创网站设计费用先做后付费的代运营
  • wordpress 帝国cmdseo研究中心超逸seo
  • 做内贸的有哪些网站网络营销主要干什么
  • 银川网站建设怎么自己注册网站
  • 如何做网站淘宝客qq刷赞网站推广快速
  • 书店网站建设策划书高质量外链平台
  • 重庆建一科技发展有限公司wp博客seo插件
  • wordpress 标签筛选seo研究学院
  • 网站建设成都公司抖音权重查询
  • 昆明免费网站建设优化大师免费安装下载
  • 石家庄企业自助建站seo网站推广优化论文
  • 视频建设网站首页百度推广官方
  • 会外语和做网站软件外包公司
  • 网站编辑能在家做长春今日头条新闻
  • 做网站用的到java吗seo视频教程百度云
  • 上海4a广告公司排名广告开户南京seo
  • 日本服务器汕头seo按天付费
  • 仿系统之家网站源码百度客服怎么转人工电话
  • iframe wordpress系统优化软件哪个好
  • 遂溪网站建设公司产品全网营销推广
  • 新网建立网站数据分析网页
  • 有什么免费的网站网络广告宣传平台
  • 沈阳男科医院去哪里seo优化排名公司
  • 怎么做网站的域名解析培训网页
  • 手机设计菜单制作软件宁波seo公司推荐