// +build amd64 amd64p32
// +build go1.5
|
|
这个例子摘自 goid, 演示了如果访问runtime内部的数据结构。 |
|
package goid
|
|
获取 goroutine ID的方法签名. |
func Get() int64
|
// +build amd64 amd64p32
// +build go1.5
|
|
#include "go_asm.h"
#include "textflag.h"
|
|
函数 Get() int64的实现 |
TEXT ·Get(SB),NOSPLIT,$0-8
|
TLS 其实是线程本地存储 (Thread Local Storage )的缩写。在 Go 语言中,TLS 存储了一个 G 结构体的指针。
也可以使用宏 |
MOVQ (TLS), R14
|
利用宏 |
MOVQ g_goid(R14), R13
|
将结果返回 |
MOVQ R13, ret+0(FP)
RET
|
下一个例子: noescape.