我已经阅读了很多关于 Go 语言的内容。有很多我不喜欢它 - 足以让我不想在日常生活中使用它。然而,我真正喜欢的语言有一点:goroutines。
我正在考虑用 C 实现它的方法。到目前为止,我在互联网上能找到的最好的方法是
#define go if (!fork()) for(;;exit(0))
这样,您可以在函数调用前加上 go,这样
go printf("Hello, world!\n");
在不同的线程中运行,以及:
go { printf("Hello, world!\n"); foo(); bar(); baz(); }
但是,当然, fork() 有速度问题。(在我的机器上,fork() 的时间是 printf() 的 7 倍,使用 rdtsc x86 指令进行基准测试并运行几次以消除在内核之间切换或被调度的可能性。)
所以,我的问题是,有没有更好的方法来实现这个,所以它更快?