0

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

在内存使用比较黑白 fork() 和线程版本期间,我观察到这是顶部列出的 %VSZ 利用率的变化。fork() 版本报告的 %VSZ 高于 pthread_create()。

谁能解释为什么会有这种变化,因为据我认为我所做的所有变化都与创建线程有关。我无法确定它是如何改变进程的虚拟内存大小的。

4

1 回答 1

0

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

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

于 2013-10-21T08:54:28.193 回答