GNU/Linux >> Belajar Linux >  >> Linux

Apa perbedaan antara utas NPTL dan POSIX?

Saya kira sumber informasi terbaik Anda dimulai dari Wikipedia dan mengikuti tautan dari sana.

Benar-benar tidak ada perbedaan:NPTL hanyalah implementasi Linux saat ini dari utas POSIX, Anda masih menggunakan keluarga fungsi pthread_*. Sebelumnya dalam sejarah Linux, perpustakaan khusus yang disebut libpthreads digunakan. NPTL muncul untuk 2.6+ kernel sekitar tahun 2003, lihat tautan di atas untuk detail lebih lanjut.

[BTW:NPTL ==Pustaka Thread Posix Asli]


"POSIX threads" adalah 'standar', mendefinisikan API untuk threading. yaitu menyatakan bahwa fungsi seperti pthread_exit () dll, harus ada dalam sistem, dan menjelaskan bagaimana mereka harus berperilaku. Semua sistem operasi yang sesuai dengan POSIX mengimplementasikan utas POSIX dengan caranya sendiri.

NPTL adalah sekumpulan fitur yang memungkinkan "Linux" (kernel) mengimplementasikan "thread POSIX" (standar) secara efisien.

Anda dapat membaca lebih lanjut tentang NPTL dan bagaimana hal itu terjadi di sini


Utas POSIX (pthread) bukan implementasi, ini adalah spesifikasi API (standar, di atas kertas, dalam bahasa Inggris) dari beberapa fungsi yang namanya dimulai dengan pthread_ dan yang didefinisikan dalam <pthread.h> tajuk. POSIX juga merupakan kumpulan spesifikasi.

NPTL sekarang ada di dalam GNU Libc di Linux dan (atau setidaknya berusaha sangat keras untuk menjadi) implementasi dari utas POSIX. Ini adalah sekumpulan kode sumber dan biner di sistem Linux Anda. Sebuah aplikasi yang dikompilasi dengan gcc -pthread dan ditautkan dengan -pthread menggunakan kode NPTL di Linux saat ini.

tambahan

Terdapat implementasi alternatif dari pthread -s:di Linux, MUSL Libc bertujuan agar sesuai dengan Posix (yang berarti memiliki pthreads); pada sistem Posix lain (AIX, Solaris, ...) Anda juga memiliki pthreads (tetapi bukan NPTL atau Glibc).


Linux
  1. Apa perbedaan antara mutex dan bagian kritis?

  2. Apa perbedaan antara adduser dan useradd?

  3. Apa perbedaan antara ls dan l?

  1. Apa perbedaan antara InnoDB dan MyISAM?

  2. Apa perbedaan antara $(CC) dan $CC?

  3. Apa perbedaan antara rute dan rute ip?

  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Apa Perbedaan Antara Git Switch dan Checkout?

  3. Apa perbedaan antara Redhat dan centOS?