加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 09:23:10 所属栏目:大数据 来源:网络整理
导读:在包syscall中包装所有syscall-s,就像libc所做的那样,如果我理解它们的话. 我研究了几种语言, Haskell,在编译器中使用libc,并且库通常也使用它,尽管有一些库为用户包装了syscall. Java和几乎所有选择libc的JVM语言. 不需要提及脚本语言,例如lua,ruby或python
在包syscall中包装所有syscall-s,就像libc所做的那样,如果我理解它们的话.

我研究了几种语言,

> Haskell,在编译器中使用libc,并且库通常也使用它,尽管有一些库为用户包装了syscall.
> Java和几乎所有选择libc的JVM语言.

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

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

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读