代码之家  ›  专栏  ›  技术社区  ›  goldenmean

并发执行/重新进入/线程安全/?

  •  1
  • goldenmean  · 技术社区  · 16 年前

    我读了很多关于线程安全性和重入性的问题的答案,但是当我思考这些问题时,我想到了更多的问题,因此出现了这个问题。

    3.)在实际情况下,两个线程将执行相同的代码,即执行相同的功能。我认为多线程的思想是并行地(在不同的内核/处理器上)执行不同的功能。

    很抱歉,如果这些查询看起来不同,但它们都是在我读到关于线程安全与可重入的文章时发生的,因此我将它们放在一起。

    任何指点,阅读材料将不胜感激。

    谢谢,

    -广告。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Reed Copsey    16 年前

    我会尽量解释这些,以便:

    1. 这里的想法是两个线程可以尝试同时运行同一个例程。这并不总是有效的,它需要特别注意定义一个类或一个进程,使多个线程可以使用同一个类或同一个静态函数的同一实例,而不会出现错误。这通常需要类中的同步。

    2. 两个线程通常执行相同的代码。线程处理时有两种不同的概念方法来划分工作。你可以考虑 任务 数据 . 在本例中,您使用一个大型集合,每个元素使用相同的例程进行处理,但处理是并行进行的。更多信息,你可以阅读我写的这篇博文 Decomposition for Parallelism

        2
  •  0
  •   danben    16 年前
    1. 两个进程不能共享内存。所以线程安全在这里是没有意义的。

    2. 重进入意味着一个方法可以由两个线程同时安全地执行。这不需要递归——线程是独立的执行单元,没有什么能阻止它们同时运行同一个方法。

    3. 线程的好处可以通过两种方式实现。一种是同时执行不同类型的操作(例如同时运行cpu密集型代码和I/O密集型代码)。另一种情况是,您可以在多个处理器之间分割一个长时间运行的操作。在后一种情况下,两个线程可能同时在不同的输入数据集上执行同一个函数。

        3
  •  0
  •   minjang    16 年前

    你的程序是如何在CPU上工作的

    1) 已经有人回答了。

    同时发生的

    在这种情况下,我使用 有两种含义:(a)在一个处理器中,多个线程共享一个物理处理器,但操作系统给人一种线程并发运行的错觉。(b) 在多核中,是的,物理上可以同时执行两个或多个线程。

    推荐文章