【发布时间】:2011-01-07 07:19:44
【问题描述】:
- 我们能否为线程同步和进程同步使用相同的同步机制
- 什么是仅在进程内可用的同步机制
【问题讨论】:
标签: multithreading process synchronization
【问题讨论】:
标签: multithreading process synchronization
信号量通常用于共享内存访问等方面的多进程同步。
临界区、互斥锁和条件是进程内线程同步的更常用工具。
一般来说,用于同步线程的方法是不用于同步进程的,但反之则通常不正确。事实上,使用信号量进行线程同步是相当普遍的。
【讨论】:
有几个同步实体。它们有不同的目的和范围。不同的语言和操作系统以不同的方式实现它们。例如,在 Windows 上,您可以使用监视器来同步进程中的线程,或者使用互斥锁来同步进程。有信号量、事件、障碍......这一切都取决于具体情况。 .NET 提供了所谓的精简版本,这些版本具有改进的性能,但仅针对进程内同步。
但要记住一件事。同步进程需要系统资源、分配和操作(锁定和释放),这需要相当长的时间。
【讨论】:
一个应用程序由一个或多个 过程。一个过程,用最简单的方式 术语,是一个执行程序。一个或 更多线程在上下文中运行 过程。 线程是一个基本单元 操作系统分配的 处理器时间。一个线程可以执行 过程代码的任何部分, 包括目前正在 由另一个线程执行。
Ref.
至于具体的同步结构,这将取决于操作系统/环境/语言
【讨论】:
一个区别:进程内的线程对进程内存具有同等的访问权限。内存通常是进程私有的,但可以显式共享。
【讨论】: