Thread

A HupWiki-ből...

Másnéven light-weight process (LWP), szál. Olyan ütemezési entitás, mely adatterületén több másik szállal is osztozik.

Mivel a programban a szálak egy address space-en osztoznak, ezért a több szál által is elérni kívánt objektumokat/erőforrásokat zárolni (lockolni) kell, erre szolgálnak a mutexek. Gyakran használt kifejezés threadinggel kapcsolatban még a reentráns és a thread-safe.

Hagyományosan a Unix és variánsai nem támogatták a threadeket, mára azonban minden ismertebb Unix-szerű operációs rendszer rendelkezik threading képességekkel. Szabványos API-t a POSIX is definiál threadek kezelésére, előnye, hogy ennek segítségével hordozható threadelt alkalmazásokat írhatunk.

A threading implementáció alapvetően kétféle lehet: tisztán userspace-ben írt, vagy kernel interfészt használó. Ez alapján háromféle threading lehetséges: 1:N, 1:1 és M:N, attól függően, hogy egy userspace szált hány kernelbeli ütemezési entitáshoz rendelünk, a két utóbbihoz kernel támogatás is szükséges. M:N szálkezelés a FreeBSD 5.x-ben lévő KSE, 1:1 pl. a 2.4-es Linux kernel és a glibc-ben lévő linuxthreads kombinációja, 1:N threadinget pedig pl a régi FreeBSD-s libc_r valósít meg. A 2.6 Linux glibc 2.3.2 NPTL-el 1:1-es, az IBM-féle NGPT-vel viszont M:N.

Külső hivatkozások