在C语言中使用增长堆栈的协程

3

我想在C(Linux)中使用协程,但不想为每个协程浪费大量空间。 我在考虑是否可以使用mmap()函数分配堆栈空间,并使用MAP_GROWSDOWN标志,但我在某个地方读到说它有问题,你知道更多关于这个问题的信息吗?

1个回答

3
不用担心。你的协程可以有一个大的堆栈,但是除非实际使用了堆栈,否则不会导致任何性能或资源问题。在那一点之前,逻辑内存页不会被分配给物理内存页。如果它被使用了,那么你当时就需要它了,不是吗?只需使用适当大小的堆栈即可。

那么你的意思是我应该分配一个大的mmap映射,而且这些内存只有在实际被使用时才会被占用? - dan_waterworth
1
警告:尽管如此,请注意:即使您不使用内存,也可能耗尽虚拟地址空间。 - Sylvain Defresne
@Sylvain,我意识到了这一点;谢天谢地,我正在针对64位架构。 - dan_waterworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接