fork()和pthread_create对VSZ的影响

时间:2013-10-21 08:44:49

标签: c linux multithreading memory fork

我正在使用C编写的嵌入式http服务器,该服务器最初使用fork()来处理每个客户端请求。 我把它切换为使用pthread_create而不是fork()。

在内存使用情况比较中,使用fork()和线程版本,我发现这是由顶部列出的%VSZ利用率的变化。 fork()版本报告的%VSZ高于pthread_create()。

任何人都可以解释为什么会出现这种变化,因为据我所知,我所做的所有更改都与创建线程有关。我无法确定它是如何更改过程的虚拟内存大小。

1 个答案:

答案 0 :(得分:-1)

基本上fork()创建了另一个进程,这意味着它被赋予了自己的内存空间,这意味着你将使用的内存相乘。

另一方面,线程与创建它的进程共享其内存空间,因此您的内存使用量会更小,但如果从多个线程访问相同的变量,则必须担心竞争条件和死锁。 (除非使用共享内存构造,否则不会发生进程)