zoukankan      html  css  js  c++  java
  • LinuxThreads 和 NPTL

    http://www.ibm.com/developerworks/cn/linux/l-threading.html

    Linux 线程模型的比较:LinuxThreads 和 NPTL
    进行移植的开发人员需要了解的关键区别摘要
    LinuxThreads 项目最初将多线程的概念引入了 Linux®,但是 LinuxThreads 并不遵守 POSIX 线程标准。尽管更新的 Native POSIX Thread Library(NPTL)库填补了一些空白,但是这仍然存在一些问题。本文为那些需要将自己的应用程序从 LinuxThreads 移植到 NPTL 上或者只是希望理解有何区别的开发人员介绍这两种 Linux 线程模型之间的区别。

    GNU_LIBPTHREAD_VERSION 宏

    大部分现代 Linux 发行版都预装了 LinuxThreads 和 NPTL,因此它们提供了一种机制来在二者之间进行切换。要查看您的系统上正在使用的是哪个线程库,请运行下面的命令:

    $ getconf GNU_LIBPTHREAD_VERSION

    这会产生类似于下面的输出结果:

    NPTL 0.34

    或者:

    linuxthreads-0.10

    linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX
    
    这个限制可以在 /usr/include/bits/local_lim.h 中查看
    
    对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源
    
    这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M
    
    可以写一段简单的代码验证最多可以创建多少个线程
    
    int main()  
    {  
        int i = 0;  
        pthread_t thread;  
     
        while (1) {  
                 if (pthread_create(&thread, NULL, foo, NULL) != 0)  
            return;  
                i ++;  
            printf("i = %d
    ", i);  
        }  
    } 
  • 相关阅读:
    常用模块——hashlib模块
    day21作业
    常用模块——configparser模块
    常用模块——xml模块
    常用模块——json模块
    常用模块——shelve模块
    常用模块——pickle模块
    shutil模块
    常用模块——os模块
    简易nagios安装出现的问题及解决方法
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/4728263.html
Copyright © 2011-2022 走看看