golang 是单进程的吗?

206 天前
 chaleaochexist

我在一个 goroutine 修改环境变量, 想在其他所有 goroutine 中生效? 可以吗?

5498 次点击
所在节点    Go 编程语言
85 条回复
xhatt
206 天前
试一下不就知道了?很简单
chaleaochexist
206 天前
@xhatt 我试过了 是的.
但是我无法保证一定是.

不知道我说没说清楚.
qloog
206 天前
Golang 默认是单进程的,这与其他语言如 Java 、Node.js 有所不同。
原因有以下几点:
1. Goroutine 更轻量,一个进程可以同时运行成千上万个 Goroutine,所以不需要多进程。
2. Goroutine 有运行时(Runtime)调度和上下文切换,不需要进程或线程切换的开销。
3. 共享内存通信更简单快捷,不需要跨进程通信。
4. 不需要考虑锁、线程安全问题,编程模型更简单。
5. GC 更容易实现且高效。
但是 Golang 也可以通过 os.Exec 启动新进程,或者在不同端口监听启动多个进程。
结论:
- Golang 默认单进程,这由语言设计决定。
- 单进程可以处理更高并发,编程模型更简单。
- 也可以手动启动多进程满足特定需求。

所以 Golang 作为一种现代编程语言,单进程多 Goroutine 是更合理的选择。但也保留了启动多进程的能力。
thinkershare
206 天前
Golang? 你确认没问错? 线程 or 进程?
emSaVya
206 天前
这几条回答也是够逆天了 single/multi process 什么时候跟编程语言绑定了?
dode
206 天前
goroutine 连线程都不是独立的
standchan
206 天前
这个问题,都不知道该怎么开口回答。。。。
dode
206 天前
@emSaVya 一般来说,python 是单线程的
lincanbin
206 天前
一个编译型语言哪来的单进程/多进程,那不取决于你代码是单进程/多进程吗?
62742a40
206 天前
我实在不知道这个问题是怎么产生的
Ericcccccccc
206 天前
标题和内容完全不搭啊...

回到你的问题, 实时修改环境变量能不能生效得看这个值是啥时候读的.
mightybruce
206 天前
我建议赶紧转行吧。
weiwenhao
206 天前
多开几个 goroutine, ps 看一下就知道 golang 开了几个进程啦。如果想看线程就 ps -T 看一下线程数。
kkk9
206 天前
OP 是想问全局变量和局部变量的区别吗?
leonshaw
206 天前
没见过哪个语言会偷偷开进程
fregie
206 天前
确实,这个问题我都不知道该怎么回答了....
我觉得你是想问这个:不同 goroutine 中其中一个修改了环境变量,其他的过去到的值有的是改之后的有的是改之前的。
我觉得你是没控制好获取的时机,估计有些在修改生效前就获取了
bug123
206 天前
知道的和不知道的都懵逼了
des
206 天前
@emSaVya 很明显三楼内容是 GPT 生成的
ysc3839
206 天前
goroutine 是单进程多线程
4kingRAS
206 天前
看 pid 就知道了,windows 也有 pid

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/982738

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX