线程的概念已经出现一段时间了,在IEEE POSIX发布标准之前,线程实现的版本在各个厂商之间存在差别,在老版本的系统中存在的是LinuxThread函数库,随后的POSIX开发了两个线程库NGPT(新一代线程库)和NPTL(本地线程库),2002年,NGPT宣布他们不愿意分化线程团队,所以停止NGPT的更新,所以NPTL成为了POSIX线程库的新标准
由于 在现在的2.6内核中一般缺省自带的是NPTL,可以在控制台输入 getconf GNU_LIBPTHREAD_VERSION查看是否是NPTL库,笔者的系统是fedora12,返回NPTL 2.11.1. 如果你是安装的NPTL,编译必须显示的指定头文件的库函数的位置,在linux程序设计(第三版)中,编译thread.c给出的编译命令为cc -D_REENTANT -I/usr/include/nptl thread.c -o thread -L/usr/lib/nptl -lpthread 但是如果系统默认使用的是NPTL线程库则可以写成cc -D_REENTANT thread.c -o thread -lpthread 其中必须定义宏_REENTAN,通过定义它可以告诉编译器我们需要可重入的功能.但是有种更为简洁的方法通过编译命令 cc thread.c -o thread -pthread可以系统自动完_REENTANT的定义.
(第一次做学习笔记)