线程控制之线程限制
在http://www.cnblogs.com/nufangrensheng/p/3496323.html中讨论了sysconf函数,Single UNIX Specification定义了与线程操作有关的一些限制。与其他的系统限制一样,这些线程限制也可以通过sysconf函数进行查询。表12-1总结了这些限制。
表12-1 线程限制和sysconf的name参数
限制名称 | 描述 | name参数 |
PTHREAD_DESTRUCTOR_ITERATIONS | 线程退出时操作系统实现试图销毁线程私有数据的最大次数 | _SC_THREAD_DESTRUCTOR_ITERATIONS |
PTHREAD_KEYS_MAX | 进行可以创建的键的最大数目 | _SC_THREAD_KEYS_MAX |
PTHREAD_STACK_MIN | 一个线程的栈可用的最小字节数 | _SC_THREAD_STACK_MIN |
PTHREAD_THREADS_MAX | 进行可以创建的最大线程数 | _SC_THREAD_THREADS_MAX |
与sysconf报告的其他限制一样,这些限制的使用是为了增强应用程序在不同操作系统实现之间的可移植性。
表12-2给出了四种操作系统实现中线程限制的值。当某些操作系统实现没有定义相应的sysconf符号(以_SC_开头)时,图中列出的值就是“未定义符号”;如果操作系统实现的限制是不确定的,列出的值就是“没有确定的限制”,但这并不意味着值是无限制的;“不支持”表明操作系统实现定义了相应的sysconf限制符号,但是sysconf函数无法识别这个符号。
注意,虽然某些操作系统实现可能没有提供访问这些限制的方法,但这并不意味着这些限制不存在,它只是表明操作系统实现没有提供使用sysconf访问这些值的方法。
表12-2 线程配置限制的例子
限制 | FreeBSD 5.2.1 | Linux 2.4.22 | Mac OS X 10.3 | Solaris 9 |
PTHREAD_DESTRUCTOR_ITERATIONS | 未定义符号 | 不支持 | 未定义符号 | 没有确定的限制 |
PTHREAD_KEYS_MAX | 未定义符号 | 不支持 | 未定义符号 | 没有确定的限制 |
PTHREAD_STACK_MIN | 未定义符号 | 不支持 | 未定义符号 | 4096 |
PTHREAD_THREADS_MAX | 未定义符号 | 不支持 | 未定义符号 | 没有确定的限制 |
本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。