6

我对“pthread”和“thread”的概念感到困惑。我知道 pthread 是 POSIX 线程的缩写形式,它是 UNIX 中使用的一种标准化线程。但是人们经常使用“线程”来指代线程。pthread 和线程是否等效?或者 pthread 只是 UNIX 中使用的线程的名称?提前致谢。

4

3 回答 3

6

线程是一个通用概念。维基百科将其定义为

在计算机科学中,执行线程是可以由操作系统调度程序独立管理的最小程序指令序列。线程是一个轻量级的进程。

Pthread 或POSIX 线程是在 Unix 上与 C 程序一起使用的该概念的一种实现。大多数现代语言都有自己的线程实现。从那个网页:

Pthread 被定义为一组 C 语言编程类型和过程调用,通过 pthread.h 头文件/包含文件和线程库实现 - 尽管在某些实现中该库可能是另一个库(例如 libc)的一部分。

于 2013-02-28T04:32:37.307 回答
1

要添加到灰色,

Pthread 符合 POSIX 标准,这意味着您可以在大多数 UNIX 操作系统中使用它。

无需为每个 Unix(Linxux、FreeBSD 等)重写它们,并且所有它们的行为都是相同的。

于 2013-02-28T11:34:29.990 回答
1

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

于 2018-02-07T19:46:07.117 回答