自1995年以来,POSIX线程api的版本如何,并已更新?

时间:2018-07-13 01:19:39

标签: c pthreads version posix

我现在刚刚进入线程,尤其是我想学习POSIX线程以及有关它们的所有内容。如在Linux中实现的。我正在寻找资源以了解它们,但是其中许多资源非常很古老。其中一些可以追溯到

我不是要资源。由于这两本书太老了,我想知道它们的主题如何。 POSIX API的版本如何?Wikipedia all I see is this,

  

POSIX Threads是由标准POSIX.1c Threads扩展(IEEE Std 1003.1c-1995)定义的API。

我不确定这是否意味着自1995年以来没有对POSIX的线程部分进行任何更新?有没有办法判断材料的相关性?

1 个答案:

答案 0 :(得分:6)

在“外部链接”部分中引用的Wikipedia页面的最底部,您会找到指向current Posix specification of pthreads.h的链接,其中包括更改的历史记录。有一些,但是基本原理是完整的。因此,您提到的书可能仍然是不错的学习材料。 (我的书架上仍然有精心编写的《使用POSIX线程编程》。)

正如在下面的评论中提到的,C11提供原子和线程本地存储,这是从4.9开始由GCC实现的。 (线程本地存储以前是在GCC中作为扩展使用的,因此并不是什么新东西。)线程本地存储的存在减少了对Pthreads线程本地存储接口的需求,但这只是Pthread的一小部分库(而且,尽管线程本地存储更易于使用,并且在语法上更方便,但实际上并不会改变程序的结构。)

C11还指定了一个可选的threads.h头,它包含类似于Pthreads的线程功能。但是,glibc不包括此标头,尽管确实存在开放源代码{{1}和闭源代码threads.h的实现,但Pthreads的使用仍然相当普遍。 (有关开放源代码的实现,请参见自10.0起可用的musl库和/或FreeBSD实现。)从概念上讲,C11接口与Pthreads非常相似;请参见第5章。显然,它们具有不同的名称,在某些情况下,它们是经过简化的。但是,一旦掌握了Pthreads,就可以轻松了解所遇到的任何C11线程程序。