什么是Pthread?

时间:2013-02-28 04:04:48

标签: multithreading operating-system

我对“pthread”和“thread”的想法感到困惑。我知道pthread是POSIX线程的简称,它是UNIX中使用的一种标准化线程。但人们经常使用“线程”来引用一个帖子。 pthread和线程是否等效?或者pthread只是UNIX中使用的线程的名称? 提前致谢。

3 个答案:

答案 0 :(得分:4)

线程是一个通用概念。 Wikipedia defines it as

  

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

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

  

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

答案 1 :(得分:1)

Pthreads是指定义用于线程创建和同步的API的POSIX标准(IEEE 1003.1c)。这是线程行为的规范,而不是实现。操作系统设计者可以以他们希望的任何方式实现规范。许多系统都实现了Pthreads规范;大多数是UNIX类型的系统,包括Linux,Mac OS X和Solaris。虽然Windows本身不支持Pthread,但是可以使用Windows的某些第三方实现。

目前正在使用三个主要的线程库:POSIX Pthreads,Windows和Java。 Pthreads是POSIX标准的线程扩展,可以作为用户级或内核级库提供。 Windows线程库是Windows系统上可用的内核级库。 Java线程API允许直接在Java程序中创建和管理线程。但是,因为在大多数情况下JVM在主机操作系统之上运行,所以Java线程API通常使用主机系统上可用的线程库来实现。这意味着在Windows系统上,Java线程通常使用Windows API实现; UNIX和Linux系统通常使用Pthreads

答案 2 :(得分:0)

要添加到Gray,

Pthread是POSIX投诉,这意味着您可以在大多数UNIX操作系统中使用它。

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