Multithreading və Concurrency əlaqəli anlayışlardır, lakin eyni şey deyil.
Multithreading tək bir prosesin birdən çox thread-ə malik olma qabiliyyətinə aiddir. Bu thread-lər eyni vaxtda işləyə bilər, bu da prosesə eyni anda birdən çox işi yerinə yetirməyə imkan verir. Hər bir thread-in öz proqram sayğacı, stek və lokal dəyişənləri var, yəni onlar bir-birindən asılı olmayaraq işləyə bilirlər. Əməliyyat sistemi hər bir thread-ə CPU vaxt ayırır və onların eyni vaxtda işləməsinə imkan verir.
Multithreading proqramın işini yaxşılaşdırmaq üçün faydalıdır, çünki o, proqrama prosessorun çoxsaylı nüvələrindən istifadə etməyə imkan verir və eyni zamanda birdən çox işi yerinə yetirməyə imkan verməklə proqramın cavab qabiliyyətini yaxşılaşdıra bilər. O, həmçinin I/O bağlı və çox tapşırıqlı proqramların işini yaxşılaşdıra bilər.
O, əməliyyat sistemi tərəfindən planlaşdırıla bilən yüngül icra vahidləri olan thread-lərdən istifadə etməklə həyata keçirilir. Multithreading həm istifadəçi səviyyəsində, həm də nüvə səviyyəli thread-lərdə həyata keçirilə bilər, birincisi tətbiqin özü tərəfindən həyata keçirilir və ikincisi əməliyyat sistemi tərəfindən dəstəklənir.
Concurrency isə sistemin müxtəlif hissələrinin bir-birinə müdaxilə etmədən müstəqil işləmə qabiliyyətini ifadə edir. Eyni zamanda bir neçə tapşırığın icrasına imkan verir. Tapşırıqların eyni vaxtda yerinə yetirilməsinin yolu budur. Tapşırıqlar birdən çox prosessordan istifadə etməklə paralel olaraq yerinə yetirilə bilər və ya bir prosessorda qarışmış şəkildə icra edilə bilər. Paralelliyin əsas cəhəti odur ki, o, bir-birinin ardınca yerinə yetirməkdən fərqli olaraq, birdən çox tapşırığın üst-üstə düşən zaman dövrlərində irəliləyiş əldə etməyə imkan verir.
Hesablamada concurrency proqramın və ya sistemin eyni vaxtda birdən çox işi yerinə yetirmək qabiliyyətinə aiddir. Bu, bir proqramın eyni vaxtda işləyən birdən çox icra başlığına malik ola biləcəyi və ya birdən çox prosesin müstəqil işləməsinə imkan vermək üçün mesaj ötürmə və ya paylaşılan yaddaşdan istifadə etməklə, multithreading kimi üsullarla əldə edilə bilər.
Concurrency vacibdir, çünki o, resurslardan səmərəli istifadə etməyə imkan verir, performansı yaxşılaşdırır və cavab verən, nasazlığa dözümlü sistemlər qurmağa imkan verir. O, həmçinin çoxlu maşınlar arasında paylana bilən kodu yazmağı asanlaşdırır və bu, yüksək miqyaslı sistemlərin inkişafına imkan verir.
Concurrency həyata keçirmək və əsaslandırmaq çətin ola bilər, çünki bu, sistemin müxtəlif hissələri arasında mürəkkəb qarşılıqlı əlaqəyə səbəb ola bilər və paylaşılan resurslara girişi idarə etmək üçün kilidlər və semaforlar kimi sinxronizasiya mexanizmlərinin istifadəsini tələb edə bilər.
Xülasə, multithreading concurrency-ə nail olmağın bir yoludur, lakin concurrency digər vasitələrlə də əldə edilə bilər. Multithreading, birdən çox iş parçacığının bir proses daxilində yerinə yetirilməsinə imkan verən spesifik concurrency tətbiqidir, concurrency isə sistemin thread-lərdən istifadə edilib-edilməməsindən asılı olmayaraq, eyni vaxtda birdən çox işi idarə etmək qabiliyyətinə istinad edən daha ümumi bir anlayışdır.
Hiç yorum yok:
Yorum Gönder