首页 > Linux考试认证

UbuntuNativePOSIX线程库

时间:2009-06-19 17:12:38  作者:  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
在2.6版本以前发布的Linux内核中,Linux线程库叫做LinuxThreads,为glibc2.0以后的GNU C库所支持。该库虽然使用了POSIX API,但是并不真正遵循POSIX标准。从2.6内核开......
  在2.6版本以前发布的Linux内核中,Linux线程库叫做LinuxThreads,为glibc2.0以后的GNU C库所支持。该库虽然使用了POSIX API,但是并不真正遵循POSIX标准。从2.6内核开始,Linux引入了NPTL。它比LinuxThreads在性能上有了很大的提高,也更遵循 POSIX标准。但是,仅仅使用2.6内核并不等于使用了NPTL。尽管有些发行版会同时携带NPTL和LinuxThreads, 但所有现代的Linux发行版都缺省携带NPTL。
  用下面的命令可以查看你的系统上正在使用的POSIX实现:
  编辑请注意,该代码中需要翻译的内容为:
  (1)“This was returned from SUSE 9.1 installation”翻译成“这是SUSE 9.1返回的结果”
  (2)“This was returned from Fedora 2.6.9-1.667 Instatllation”翻译成“翻译成“这是Fedora 2.6.9-1.667返回的结果”
  (3)“This was returned from an old RedHat installation” “翻译成“这是一个老版本的RedHat返回的结果”
  $ getconf GNU_LIBPATHREAD_VERSION
  $ getconf GNU_LIBPATHREAD_VERSION
  $ getconf GNU_LIBPATHREAD_VERSION
  用下面的方法可以查看正在使用的Linux发行版是用什么编译工具编译链接的。
  要找到/bin/ls链接的libpthreads库,如下:
  (代码)(P81倒数第14行)
  $ ldd /bin/ls |grep libc.so.6
  从上面的输出内容可以看到,libc.so.6是和“Native POSIX Threads Library by Ulrich Drepper”一起链接的。
  NPTL实现了一对一的线程模型;也就是说,一个用户线程对应一个内核线程。NPTL也实现了POSIX进程间的同步原语,而且线程选项PTHREAD_PROCESS_SHARED也被明确支持了。
  1 最大线程数
  在Linux上一个应用程序能够创建的线程最大数量在不同的发行版上是不同的。运行在2个CPU 2GB内存上的SUSE9.1在pthread_create返回EAGAIN错误前允许创建16317个线程。EAGAIN错误的意思是说应用程序可能超过了系统的某些限制。该应用程序创建线程的栈大小为16384,这是创建线程时允许的最大栈大小。在把栈大小设置为16384前,该应用程序会在创建第 1021个线程时失败,并返回错误码ENOMEM。任何情况下,8000到16000个线程已经足以满足任何应用程序的需求。
  要在Linux上创建大数量的线程,需要先做下面的事情:
  1. 创建正确的栈大小(注释17);
  2. 检查ulimit(可以输出内存、栈大小限制等的工具),修改对应项或编辑/etc/security/limits.conf文件。
如果您需转载 UbuntuNativePOSIX线程库,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门