【问题标题】:What are the disadvantages of threads over process?线程优于进程的缺点是什么?
【发布时间】:2017-09-14 12:48:53
【问题描述】:

-面试题

有人问我thread 的缺点。什么情况下我们不应该使用thread 而使用process

除了在某些情况下无效的内存访问之外,我想不出太多。

【问题讨论】:

  • @KenWhite 这个帖子只包含积极的话题。
  • 线程确实有很多优点。只是很多程序员不知道如何正确编写线程代码。死锁和竞争错误很难诊断和修复。单线程进程的问题要少得多,它隔离了内存,因此另一个进程中的线程不会破坏任何东西。然而,这种隔离也使得进程难以合作,但采取一些措施往往会导致难以诊断和修复的错误。
  • @HansPassant Process 也遭受死锁和竞争条件。
  • 如果您不想被录用,可以这么说。只是加强这些东西,这很重要。

标签: multithreading process operating-system


【解决方案1】:

由同一个进程产生的线程都共享相同的内存。进程都在它们自己的内存上下文中运行。

在 Linux 中(我不知道 Windows 下的行为是什么样的)新生成的子进程通常会收到父进程的内存上下文的某些部分的副本,因此在运行时和 CPU 上的内存成本更高- 时间/MMU 在创建时是明智的。此外,上下文切换 - (卸载)从 CPU 加载进程或向 CPU 加载进程(当进程或线程无事可做并被推送到队列以支持具有实际工作的进程或线程时) - 可能会更昂贵一个过程。

另一方面,进程可能更安全,因为它们的内存与其兄弟进程的内存是隔离的。

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 2013-05-14
    • 1970-01-01
    • 2018-06-19
    • 2010-12-23
    • 1970-01-01
    • 2014-01-24
    • 2013-11-13
    • 2021-12-18
    相关资源
    最近更新 更多