有沒有實現過cas的golang客戶端
1 回答

慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
首先理解是錯的,不管用戶態的API(syscall)是否是同步還是異步,在kernel層面都是異步的。其實實現原理很簡單,就是利用C(嵌入匯編)語言可以直接修改寄存器(setcontext/setjmp/longjmp均是類似原理,修改程序指針eip實現跳轉,棧指針實現上線文切換)來實現從func_a調進去,從func_b返回出來這種行為。對于golang來說,func_a/func_b屬于不同的goroutine,從而就實現了goroutine的調度切換。另外對于所有可能阻塞的syscall,golang對其進行了封裝,底層實際是epoll方式做的,注冊回調后切換到另一個runnable的goroutine。
- 1 回答
- 0 關注
- 1353 瀏覽
添加回答
舉報
0/150
提交
取消