我以前在我的应用程序中使用过线程并且非常了解它的概念,但最近在我的操作系统讲座中我遇到了 fork()。这类似于线程。
我用谷歌搜索了它们之间的区别,我知道:
- Fork 只不过是一个看起来与旧进程或父进程完全相同的新进程,但它仍然是具有不同进程 ID 并拥有自己的内存的不同进程。
- 线程是具有较少开销的轻量级进程
但是,我心中仍有一些疑问。
- 什么时候你应该更喜欢 fork() 而不是线程,反之亦然?
- 如果我想调用一个外部应用程序作为一个孩子,那么我应该使用 fork() 还是线程来做呢?
- 在进行谷歌搜索时,我发现人们说在线程中调用 fork() 是一件坏事。为什么人们在做类似的事情时要在线程内调用 fork()?
- 由于父进程和子进程不同时运行,fork() 不能利用多处理器系统,这是真的吗?