线程控制之线程限制


在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/

相关内容