UbuntuNativePOSIX线程库

文章作者 100test 发表时间 2011:03:26 20:42:05
来源 100Test.Com百考试题网


  在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文件。
  第4、5、6章更详细的讲述了POSIX线程的内容,以及它与NPTL的区别。
  2 国际化(I18N)(注释18)和本地化
  I18N对项目移植会有多大的影响在很大程度上取决于待移植的应用程序。如果一个应用程序仅需要一些简单的消息目录(message catalogue)转换、时期和时间显示,或使用正则表达式进行简单的文本串查找,那么把这些功能从UNIX平台移植到Linux上还是比较容易的。但是,如果该应用程序进行了复杂的文本分析,就像有时在文本编辑器理使用的那样,移植这些内容将会是比较困难的,见下一段的分析。
  Linux遵循ISO对标准locale名称的命名规范,[locale]_[territory].[codeset]。其中,locale 由两个字符组成,代表言语.territory由两字符组成,代表国别。例如en_US.iso885915和zh_CN.gb18030。但是,每个系统上可用的locale和locale的内容是各不相同的。移植使用了locale复杂应用的应用程序可能需要学习具体的语言规范和翻译规则,甚至需要修改Linux上已有的locale才能使移植后的应用程序像在源系统上那样运行。
  表3-4列出了支持的GNU libc国际化函数。linux.ctocio.com.cn/imagelist/2009/168/5bb91ws241x2.pdf" target=_blank

相关文章


Linux操作系统中安装内核的方法详细介绍
新手学堂:嵌入式Linux文件系统详细介绍
Linux资格认证考试,资格认证考试,Linux,资格认证,资格认证考试,认证考试,资格认证考试,红旗
最大汽车网站采用红帽Linux方案
UbuntuNativePOSIX线程库
红旗Linux桌面7.0版引入QtSDK组件
Ubuntu7.04系统上安装ApachePHPMySQL
Linux下MySQL数据库二进制日志恢复方法
redflag认证部分试题
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛