關於linux的執行緒實現
關於 Linux 的 Thread
通俗意義下, Linux 的 pthread 是使用者級執行緒,採用的是 N-on-N 排程模型,即核心一個輕量級程式管理一個核外執行緒。
1 Linux Implementations of POSIX Threads [1]
Over time, two threading implementations have been provided by the GNU C library on Linux:
過去曾經有一段時間, Linux 下有兩種 GNU C 的執行緒庫實現存在,即是說,這之前只有 LinuxThreads 庫存,之後到現在只有 NPTL 庫存在。
1.1 LinuxThreads
This is the original Pthreads implementation.
Since glibc 2.4, this implementation is no longer supported.
在使用 LinuxThreads 構建庫時,需要使用 -D_REENTRANT 編譯時標誌。這使得庫執行緒是安全的。
LinuxThreads 的設計通常都可以很好地工作;但是在壓力很大的應用程式中。
它的效能、可伸縮性和可用性都會存在問題。[ 2 ]
到 2005 年作者還在維護。
1.2 NPTL (Native POSIX Threads Library)
This is the modern Pthreads implementation. By comparison with
LinuxThreads, NPTL provides closer conformance to the requirements of
the POSIX.1 specification and better performance when creating large
numbers of threads. NPTL is available since glibc 2.3.2, and requires
features that are present in the Linux 2.6 kernel.
NPTL 是 2.6 核心的預設配置,優於 LinuxThreads 。從 2002 年到現在一直還有更新。
1.3 結論, pthread_creat( ) 速度遠優於 fork( ).
2 檢視系統 threads 庫版本的命令:
$getconf GNU_LIBPTHREAD_VERSION NPTL 2.1
3 檢視系統 threads 庫作者版本的命令:
$(ldd /bin/ls | grep libc.so | awk '{print $3}')| egrep -i 'threads|nptl
Native POSIX Threads Library by Ulrich Drepper et al
參考文件:
[1] http://en.wikipedia.org/wiki/Native_POSIX_Thread_Library
[2] http://www.ibm.com/developerworks/linux/library/l-threading.html?S_TACT=105AGX52&S_CMP=cn-a-l
[3] http://www.kernel.org/doc/man-pages/online/pages/man7/pthreads.7.html
[4] The Native POSIX Thread Library for Linux, Ulrich Drepper,Ingo Molnar,Red Hat, Inc.
[5] http://www.gnu.org/software/libc/manual/html_mono/libc.html
相關文章
- 關於Numba的執行緒實現的說明執行緒
- 關於多執行緒的兩種實現方式執行緒
- 關於linux多執行緒fork的理解和學習Linux執行緒
- 執行緒池的實現執行緒
- 關於redis單執行緒的分析Redis執行緒
- 關於執行緒設計的感受執行緒
- 基於C++11的執行緒池實現C++執行緒
- Java 執行緒池中的執行緒複用是如何實現的?Java執行緒
- 關於執行緒池的面試題執行緒面試題
- 關於執行緒的幾個函式執行緒函式
- Java多執行緒的實現Java執行緒
- python執行緒池的實現Python執行緒
- 執行緒池的實現原理執行緒
- SpringBoot執行緒池和Java執行緒池的實現原理Spring Boot執行緒Java
- linux熱開關超執行緒方法Linux執行緒
- java基礎 關於執行緒安全Java執行緒
- Java 關於執行緒的一些使用Java執行緒
- python關於執行緒的一點介紹Python執行緒
- java 多執行緒(關於Thread的講解)Java執行緒thread
- 關於js執行緒問題的解讀JS執行緒
- java執行緒實現方式Java執行緒
- 如何實現多執行緒執行緒
- Java中實現執行緒的方式Java執行緒
- 5招教你實現多執行緒場景下的執行緒安全!執行緒
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒
- Java之實現多執行緒的方式三:實現Callable介面(結合執行緒池使用)Java執行緒
- linux-執行緒Linux執行緒
- 執行緒屏障CyclicBarrier實現原理執行緒
- 執行緒池ThreadPoolExecutor實現原理執行緒thread
- 簡易執行緒池實現執行緒
- Java多執行緒實現方式Java執行緒
- 【unity】 Loom實現多執行緒UnityOOM執行緒
- JavaScript如何實現多執行緒?JavaScript執行緒
- Runnable介面實現多執行緒執行緒
- 多執行緒具體實現執行緒
- 面試-實現多執行緒的方式面試執行緒
- 使用Runnable介面實現執行緒的方法執行緒
- 執行緒池的實現程式碼分析執行緒
- 多執行緒伺服器的實現執行緒伺服器