
執行緒
|
241
執行緒之間的通訊。由於 Pthread 缺乏核心的支援,LinuxThreads 需要一個「管理」執
行緒來協調活動、無法應付大量執行緒、與 POSIX 標準不完全一致的問題。
NPTL(全名為Native POSIX Thread Library)用於取代LinuxThreads,而且它
仍然是Linux 的標準Pthread 實作。它是在Linux 2.6 及
glibc
2.3 被納入的。如同
LinuxThreads,NPTL 基於
clone()
系統呼叫提供了 1:1 執行緒,而且核心的執行緒模型
就像任何其他的行程,只差在它們會共享某些資源。與 LinuxThreads 不同的是,NPTL
會利用 2.6 版核心額外新增的核心介面,包括用於同步執行緒的
futex()
系統呼叫、用
於終止行程中所有執行緒的
exit_group()
系統呼叫,以及核心對
執行緒區域儲存區
(
thread-local storage
,常簡寫為
TLS
)的支援。NPTL 解決了 LinuxThreads 不一致的問
題,並且大大提升了執行緒的可擴展性,讓單一行程得以建立上千個執行緒而不會變慢。
NGPT
NGPT(全名為 Next Generation POSIX Threads)是 NPTL 的競爭對手以
及早期的替代方案。如同 NPTL,NGPT 試圖克服 LinuxThreads 的局限性
以及提升其可擴展性。然而,跟 NPTL 及 LinuxThreads 不同的是,NGPT
實作了 N:M 執行緒 ...