【问题标题】:What's a Pthread?什么是 Pthread?
【发布时间】:2013-02-14 03:45:31
【问题描述】:
我对“pthread”和“thread”的概念感到困惑。我知道 pthread 是 POSIX 线程的缩写形式,它是 UNIX 中使用的一种标准化线程。但是人们经常使用“线程”来指代线程。 pthread 和线程是否等效?或者 pthread 只是 UNIX 中使用的线程的名称?
提前致谢。
【问题讨论】:
标签:
multithreading
operating-system
【解决方案1】:
线程是一个通用概念。 Wikipedia defines it as:
在计算机科学中,执行线程是可由操作系统调度程序独立管理的最小程序指令序列。线程是轻量级进程。
Pthreads 或POSIX threads 是在 Unix 上与 C 程序一起使用的该概念的一种实现。大多数现代语言都有自己的线程实现。从该网页:
Pthread 被定义为一组 C 语言编程类型和过程调用,通过 pthread.h 头文件/包含文件和线程库实现 - 尽管在某些实现中该库可能是另一个库(例如 libc)的一部分.
【解决方案2】:
要添加到灰色,
Pthread 符合 POSIX 标准,这意味着您可以在大多数 UNIX 操作系统中使用它。
无需为每个 Unix(Linxux、FreeBSD 等)重写它们,并且所有它们的行为都是相同的。
【解决方案3】:
Pthreads 指的是 POSIX 标准 (IEEE 1003.1c),它定义了用于线程创建和同步的 API。这是线程行为的规范,而不是实现。操作系统设计者可以以他们希望的任何方式实现规范。许多系统都实现了 Pthreads 规范;大多数是 UNIX 类型的系统,包括 Linux、Mac OS X 和 Solaris。尽管 Windows 本身不支持 Pthreads,但有一些适用于 Windows 的第三方实现。
目前使用三个主要线程库:POSIX Pthreads、Windows 和 Java。 Pthreads 是 POSIX 标准的线程扩展,可以作为用户级或内核级库提供。 Windows 线程库是 Windows 系统上可用的内核级库。 Java 线程 API 允许直接在 Java 程序中创建和管理线程。然而,因为在大多数情况下,JVM 运行在主机操作系统之上,Java 线程 API 通常是使用主机系统上可用的线程库来实现的。这意味着在 Windows 系统上,Java 线程通常使用 Windows API 实现; UNIX 和 Linux 系统经常使用 Pthreads