Концепциите за нишка ("нишка") и многопоточност

Концепциите за нишка ("нишка") и многопоточност - раздел Образование, Операционни системи, среди и обвивки Когато говорят за процеси, те искат да отбележат, че О.

Многопоточността предоставя възможността за паралелно изпълнение на няколко вида операции в една приложна програма. Паралелното изчисление (и следователно по-ефективно използване на ресурсите на процесора и по-малко общо време за изпълнение на задачите) сега често се прилага на ниво нишки и програма, проектирана като няколко нишки в рамките на един процес, може да бъде изпълнена по-бързо поради паралелното изпълнение на нейните отделни части. В същото време е желателно да се намали взаимодействието на нишките помежду си, тъй като ускорението от едновременното изпълнение на паралелни нишки може да бъде сведено до минимум поради забавяне на синхронизацията и обмена на данни.

Пример за използване на многопоточност е електронна таблица или текстообработваща програма. Ако са проектирани с мисъл за многопоточност, тогава потребителят може да поиска да преизчисли своя работен лист или да обедини няколко документа и едновременно с това да продължи да попълва таблицата или да отваря следващия документ за редактиране. Многонишковостта може да се използва особено ефективно за изпълнение на разпределени приложения: например многонишков сървър може едновременно да изпълнява заявки от няколко клиента наведнъж.

И така, обектът „нишка“ беше въведен, за да разпредели процесорното време между възможните задачи с помощта на тези единици. Същността на „процеса“ предполага, че когато изпращате, трябва да вземете предвид всички ресурси, които са му присвоени. И когато манипулирате потоци, можете да промените техния контекст само ако това се случипревключване от една нишка към друга в рамките на същия процес. Всички останали изчислителни ресурси не са засегнати. Всеки процес винаги се състои от поне една нишка и само в случай на вътрешен паралелизъм става възможно тази една нишка да се „раздели“ на няколко паралелни.

Необходимостта от нишки възникна дори при еднопроцесорни виртуални машини, тъй като нишките ви позволяват да организирате изчисленията по-ефективно. За да се използват предимствата на многопроцесорните виртуални машини със споделена памет, вече са необходими нишки, тъй като те позволяват не само наистина да се ускори изпълнението на тези задачи, които позволяват тяхното естествено паралелизиране, но и да натоварят процесорите, като по този начин елиминират техния възможен „бездействие“.

Всяка нишка се изпълнява строго последователно и има собствен програмен брояч и стек. Нишките, подобно на процесите, могат да създават дъщерни нишки, тъй като всеки процес се състои от поне една нишка. Подобно на традиционните процеси (т.е. процеси, състоящи се от една нишка), всяка нишка може да бъде в едно от активните състояния. Докато една нишка е блокирана (или просто чака в опашка от задачи за изпълнение), друга нишка в същия процес може да се изпълнява. Нишките споделят процесорно време по същия начин, както нормалните процеси, според различни опции за планиране.

Няма пълна защита между нишките, тъй като не е необходима. Всички нишки на един процес винаги решават общия проблем на един потребител и механизмът на нишката се използва тук, за да разреши проблема по-бързо чрез паралелизиране. В същото време е много важно за програмиста да получи на свое разположение удобни средства за организиране на взаимодействието на различни части на единпрограми.