猿问

有没有实现过cas的golang客户端?

有没有实现过cas的golang客户端


呼唤远方
浏览 1326回答 1
1回答

慕侠2389804

首先理解是错的,不管用户态的API(syscall)是否是同步还是异步,在kernel层面都是异步的。其实实现原理很简单,就是利用C(嵌入汇编)语言可以直接修改寄存器(setcontext/setjmp/longjmp均是类似原理,修改程序指针eip实现跳转,栈指针实现上线文切换)来实现从func_a调进去,从func_b返回出来这种行为。对于golang来说,func_a/func_b属于不同的goroutine,从而就实现了goroutine的调度切换。另外对于所有可能阻塞的syscall,golang对其进行了封装,底层实际是epoll方式做的,注册回调后切换到另一个runnable的goroutine。
随时随地看视频慕课网APP

相关分类

Go
我要回答