簡體   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