线程同步与进程同步

问题描述 投票:0回答:5
  1. 我们可以对线程同步和进程同步使用相同的同步机制吗
  2. 哪些同步机制仅在进程内可用
multithreading process synchronization
5个回答
3
投票

信号量通常用于共享内存访问等方面的多进程同步

临界区、互斥体和条件是进程内线程同步的更常用工具。

一般来说,用于同步线程的方法并不用于同步进程,但反之通常则不然。事实上,使用信号量进行线程同步是相当常见的。


2
投票

有多个同步实体。它们有不同的目的和范围。不同的语言和操作系统以不同的方式实现它们。例如,在 Windows 上,您可以使用监视器来同步进程内的线程,或使用互斥体来同步进程。有信号量、事件、障碍……这一切都取决于具体情况。 .NET 提供了所谓的精简版本,该版本提高了性能,但仅针对进程内同步。

有一件事要记住。同步进程需要系统资源,分配和操作(锁定和释放)需要相当长的时间。


1
投票

一个应用程序由一个或多个 流程。最简单的过程 术语,是一个正在执行的程序。一个或 更多线程在上下文中运行 过程。 线程是基本单位 操作系统分配的 处理器时间。一个线程可以执行 进程代码的任何部分, 包括目前正在处理的部分 由另一个线程执行。

参考

至于具体的同步结构,这取决于操作系统/环境/语言


0
投票

一个区别:进程内的线程可以平等地访问进程的内存。内存通常是进程私有的,但可以显式共享。


0
投票

在大多数情况下,进程同步和线程同步是齐头并进的,并且必须根据它们所应用的用例来正确指定和设置。

即使你设置了一定的进程同步逻辑,在处理共享资源时也必须指定线程同步(这种情况经常发生)。 如果您进行了进程同步,则意味着您同步了进程之间对共享内存的访问,但这并不意味着您同步了进程内线程之间对共享内存的访问。

我的观点是你必须始终设置两者,否则一般来说工作没有完全完成。

© www.soinside.com 2019 - 2024. All rights reserved.