繁体   English   中英

为什么golang选择了系统调用而不是libc

[英]why golang chose syscall rather than libc

在包syscall中包装所有syscall-s,就像libc所做的那样,如果我理解它们的话。

我研究了几种语言,

  • Haskell,在编译器中使用libc,并且库通常也使用它,尽管有一些库为用户包装syscall。

  • Java和几乎所有选择libc的JVM语言。

不需要提及脚本语言,例如lua,ruby或python,它们需要可移植,因此它们需要libc作为POSIX的实现。

我最近没有使用锈,但也有一些人说使用libc也生锈了。

那么,golang为什么决定首先实现一个系统调用包。 它不可移植,移植到每个内核,甚至同一内核的每个主要版本都需要更多人。

因为Go管理由Go Runtime管理的goroutine中的进程,它是用C语言编写的,并且在链接阶段静态链接到编译的用户代码。 由于go使用自己的运行时不直接在OS中管理其系统调用,因此它实现了自己的syscall包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM