Golang(Go语言)中实现典型的fork调用
原文见:https://jiajunhuang.com/articles/2018_03_08-golang_fork.md.html
背景
在日常的系统编程中,我们经常有这样的需求:fork
多个子进程去执行任务。例如典型的 master-slave
架构便是这样的,fork
调用之后,父进程开始作为管理进程管理子进程,而子进程则开始执行处理请求的代码。但是在Go语言中,由于Go语言屏蔽了进程、线程的概念,而只提供了 goroutine
的概念,导致我们无法很好的直接操作 fork
调用。在Go语言中,此类解决方案只有以下三种:
这三个都类似于 fork + exec
,但是没有类似C中的fork调用可以达到在fork之后根据返回的pid然后进入不同的函数的方案。原因主要是:<