V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  henglinli  ›  全部回复第 1 页 / 共 10 页
回复总数  190
1  2  3  4  5  6  7  8  9  10  
2021-02-05 15:47:31 +08:00
回复了 Dongxiem 创建的主题 Go 编程语言 几个关于 Go Runtime 的问题
@Dongxiem 不是。
runtime 其实是 runtime dependence 运行时依赖。
你写了一个空的 main.main 函数,编译器套件隐式链接的那一部分就是 runtime,恰好这一部分也是 runtime 包。
在函数层面上,runtime 包里面的函数都是 runtime ;在操作系统层面上,你看到的 go 程序执行的线程都是 runtime 包里面的函数通过系统调用创建的。
你写的代码只是被 runtime.mian 调用而已,当你编译链接出一个 golang 编写的程序,runtime 包被隐式的链接进去,不需要你在代码里 import,因为所以的其他代码都依赖 runtime 包。

我说不好回答时,既要考虑你想要问什么,又要考虑我知道什么,还要考虑篇幅等。程序没有进内存前只是函数,你问“运行”当然是进内存后了,这些 runtime 函数都被 OS 线程调用执行,所以我回到 runtime 跑在 OS 线程上。但是有可能,你是想问 runtime 是在哪里调用的。不是你的函数调用 runtime,而是 runtime 调用你的函数,先执行 runtime,runtime 系统调用创建 OS 线程后,再调用 main.main 中你的函数。

gccgo 的 runtime 另当别论。
2021-02-05 02:57:24 +08:00
回复了 Dongxiem 创建的主题 Go 编程语言 几个关于 Go Runtime 的问题
golang 的 runtime 其实是个线程池,用 work-steal 调度算法调度 goroutine 。golang 的实现已知的有 go gccgo llgo,gccgo 也是 go 的官方实现就是下面的 gofrontend,llgo 已经完了。参见 https://docs.google.com/document/d/1TTj4T2JO42uD5ID9e89oa0sLKhJYD0Y_kqxDv3I3XMw/edit#heading=h.nfb3viti0vlt

runtime 运行在 OS 线程上,比如 pthread 。参见 https://github.com/golang/gofrontend/blob/master/libgo/runtime/go-libmain.c#L208

go 进程应该是 goroutine 吧。这个真不好回答。有很多个,但至少有一个 runtime.main,至于最多有多少个,如果 golang 实现者考虑过这个问题的话,会有一个可以设置的参数的,可以用环境变量 GOMAXPROCS 限制 OS 线程数。
比如:一个只有 http.ListenAndServe 的 pprof go 程序,有 3 个 goroutine,5 个 OS 线程。//go version go1.15.7 darwin/amd64

linux 里系统查看 go 进程是指 top 用查看 go 程序吧。top 查看到的是那个“线程池”,用 pprof 可以查看 goroutine 。
参见 https://golang.google.cn/pkg/net/http/pprof/
2019-04-12 19:18:58 +08:00
回复了 xcaptain 创建的主题 Linux Linux 快速备份系统
@momocraft 備份文件確實有點落後了,但是,目前還有人認爲 btrfs 不穩定呢.
我曾經將 btrfs 的 snapshot send 到 apfs 的 macos 中后,電腦壞了,然後通過開源的 apfs 工具在 choromeos 中把它提取出來,折騰一番照樣啓動了,由於當時用的-native 編譯的,後來又重新安裝了.
2019-04-06 17:02:25 +08:00
回复了 Livid 创建的主题 Ubuntu 有没有可能彻底删除 systemd 里已经是 not-found 状态的 service?
感觉 not found 是正常行为,已经彻底清除了该 service 就该是 not found。如果 systemd 严格遵守 unix 原则:一切都可通过文件配置,那么应该删除该 service 配置文件就没问题了,目前看来是的。比如,systemd 默认会启用 /var/machines,如果用 btrfs 还会创建一个 volume,我都是直接删除系统目录 /usr/lib64/systemd 下面的相关配置文件;不过,自订的 service 如 nft weston 没有删除过,不清楚。
2019-04-02 17:11:11 +08:00
回复了 gozfree 创建的主题 程序员 github 开源C代码库
“用之开源”,很好;“取之开源”,取向哪里,要怎么确认?大概浏览了下 mp4parser 上的源码,大概有 vlc 的代码吧。
2019-03-22 21:56:10 +08:00
回复了 bulabean 创建的主题 C 继续坚持做自己喜欢的事?还是找个国企铁饭碗?
少作恶,或者别做恶。
2019-03-21 00:47:36 +08:00
回复了 heron518 创建的主题 程序员 当前社会,什么事件才可以激发学习和创作动力?
苏联解体是什么时候?
小心有诈
2019-03-19 12:05:05 +08:00
回复了 eternaldzw 创建的主题 程序员 没人讨论一下美团和饿了么 APP 监听用户录音吗
@hauibojek ios 的安全机制只能防御非恶意应用。恶意应用开发者一般会利用漏洞绕过绕过系统的安全机制。iOS 让包含大量功能的单个应用上架这个审查机制本身就有问题,虽然这是 apple 为了在中国赚钱作出的让步。
2019-03-18 14:16:54 +08:00
回复了 Teamo 创建的主题 Linux gcc 的搜索路径与 sysroot
"gcc 编译"指的是使用 gcc 交叉編譯還是編譯 gcc(bootstrap)用來交叉編譯?若是後者,without-headers 選項需要;若是前者,你的 gcc 安裝有問題.請注意閲讀 https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/Fixed-Headers.html#Fixed-Headers
它大概是講 gcc 包含預設頭文件及其原因和部分細節,由於英文水平有限無法幫你翻譯.

其他本人認爲有用的信息:
glibc 和 binutils 應該由同一個編譯器編譯而來.(確認是否安裝了多個版本的 glibc 和 binutls.)
一般的交叉編譯環境都是 chroot 進去用的,我相信知道 exherbo 都很少,遑論使用它的 multiarch.(最好用 chroot 的方式的 sdk).
osdevwiki https://wiki.osdev.org
2019-03-18 13:09:42 +08:00
回复了 KigKrazy 创建的主题 程序员 Linux 文件夹定时备份有什么工具吗?
btrfs 或者 zfs 写个 systemd 定时器就行 https://www.freedesktop.org/software/systemd/man/systemd.timer.html
2019-03-18 03:10:51 +08:00
回复了 niuxuewei 创建的主题 Java 怎么从 mac 上彻底卸载 jdk 11
记得有个命令能显示已安装包的所有文件,曾以此删除了系统自带的 python ruby perl
2019-03-16 11:51:45 +08:00
回复了 woxibohua 创建的主题 职场话题 制造业企业如何招程序员?
有限元难啊
Linux 上装杀毒软件软件也主要是杀 Windows 病毒。确实有这么高安全要求的。
2019-03-15 13:10:08 +08:00
回复了 trepwq 创建的主题 宽带症候群 境外手机卡大陆漫游 dns 污染问题
@txydhr 漫游法律上不受所在地约束。我要强调的不是墙存在于“漫游”,而是监控存在于“漫游”,而监控的实现包括过滤、舆情控制等。如果漫游真如你说的只是 vpn 通道这样的技术,那么技术上讲墙可以作用于“漫游”,理论上讲任何公开的协议墙都有能力或者将有能力识别。还有这篇报道 https://www.solidot.org/story?sid=59743&threshold=0,译文中未提及“漫游”,如果“漫游”真的安全到无法被监控,那么这个记者应该会选择操作简单的“漫游”,不排除他认为他们业内默认“漫游”无需特意说明的情况。而他转而寻求应用层的安全,恰恰说明他不相信“漫游”安全。
关于法律,我主要指的是涉及到国家安全之类的。
当你不够资格跟他讲法律时,你还讲法律吗?当你够资格跟他讲法律时,他跟你讲国家安全。美国抵制恰恰是遵守中国法律的华为。
2019-03-14 19:33:40 +08:00
回复了 fundebug 创建的主题 程序员 再见, TD-SCDMA
还是有人懂了,大唐电信,对移动来说血赚。
2019-03-13 19:28:06 +08:00
回复了 index90 创建的主题 Go 编程语言 Go 读取全局变量要加锁?!
并发读写加锁没问题。
个人建议写 go 代码尽量不要用 sync 包,go 的 channel 够用了,如果发现 channel 性能不够用,请考虑重新设计。尽量考虑使用消息传递。如果有能力用 sync/atomic,请忽略以上建议。
1  2  3  4  5  6  7  8  9  10  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1165 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 44ms · UTC 19:00 · PVG 03:00 · LAX 11:00 · JFK 14:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.