【发布时间】:2012-07-24 15:43:11
【问题描述】:
我是这方面的初学者。
我研究过fork()、vfork()、clone() 和 pthreads。
我注意到pthread_create() 会创建一个线程,这比使用fork() 创建一个新进程的开销要小。此外,线程将与父进程共享文件描述符、内存等。
但是fork() 和clone() 什么时候比 pthread 更好?你能举个真实的例子给我解释一下吗?
提前致谢。
【问题讨论】:
-
你在比较两个不同的东西。没有一个更好。正好,哪里都适用。
-
Ohkk.. Gottaa 我们想要单独执行,然后 fork() 更好,当我们想要由不同线程在相同地址空间上执行一些操作时,pthread 很酷。是这样吗?
-
pthread_create()致电clone() -
pthread_create()的开销不低于fork()。事实上它是更多。两者都在内部调用clonesyscall,但 pthread 用户空间库需要更新用户空间中的许多线程跟踪结构,以创建新的内核任务。