Какви са нишки (нишки) и защо да ги използват, за програмиране в Делфи - уеб, MySQL
В зората на компютърната епоха, програмирането е най-вече с един резба. Създали сте на програмата, пробивайки перфокарти или лента, за лечение на купчина от карти на местен компютърен център, а няколко дни по-късно получиха още един комин, в успешни случаи, съдържащи желаните резултати. Цялата обработка се извършва в съответствие с принципа - получена в миналото, извършвана преди това, а когато стартирате програмата, тя е използвал времето компютър.
Но нещата се променят. концепция Многонишковата изпълнение първи път се появява в времеразделяща системи (разпределено във времето), където няколко души едновременно могат да работят върху един централен компютър. Важно е, че процесора просто разделен между потребители и самата операционна система е използвал понятието "процес" и "поток". Настолни компютри са били по същия начин. По-рано, DOS и Windows са единични задачи. единствена програма може да работи на компютър. С нарастващата сложност на приложенията и увеличаващите се изисквания към компютъра, особено по отношение на графика с висока производителност и функционалност на мрежата, мулти-процес и многонишковите необходими операционни системи.
На първо място, ние определяме, което се нарича процес. Най Windows 95, 98 и NT имат тази добра интуитивна идея. Те разглеждат процеса като програма, която работи на машината, да съществуват успоредно и споделяне с други програми на процесора, диска и паметта. Програмистите знаят, че този процес - това е предизвикателство, на изпълнимия код и този код е уникален, и неговите инструкции се изпълняват в определен ред. По принцип процесите се изолират. Те използват ресурсите (памет, диск IO, процесорно време) са виртуални, така че всеки процес има свой собствен набор от ресурси, без да ги споделят с другите, които се предоставят от операционната система. Процеси да изпълнява код модули. Те могат да бъдат разделени, например, Windows Explorer модули на код, и Microsoft Word - са различни. Въпреки това, те могат да бъдат споделени, както в случая на DLL. DLL код обикновено се извършва в много процеси, а често и в същото време. Следвайки инструкциите по принцип за различните процеси не е наредено: Microsoft Word не спира отваряне на документ при изпращане на данни от опашката на принтера! Разбира се, когато различни процеси взаимодействат, програмист трябва да пазят реда, тъй като ще бъдат обсъдени по-долу.
В следната дефиниция - поток (прежда, конци). Концептуални потоци се появяват, когато стана ясно, че е желателно да има приложение, прилагане на набор от действия, с минимални разходи за включване, доколкото е възможно едновременно. В случаите, когато определени действия могат да доведат до значително забавяне в един от потоците (например, в очакване на въвеждане от потребителя), често е желателно, че програмата е имал възможността да извършва други дейности, независимо (например фон магията за проверка или обработка на входящи съобщения от мрежата). Въпреки това, създаването на нов метод за всяко действие (съответно с възниква проблемът да се осигури тяхното взаимодействие) често е неоправдано.
В повечето системи, които поддържат многонишкова, може да има много потребители, които правят едновременни заявки към компютърна система. Обикновено броят на процесори в системата е по-малко от броя на потоци, които могат да се изпълняват паралелно. Повечето системи за подпомагане на разделяне по време (време нарязване), известен също като превантивна многозадачност (изпреварваща многозадачност), за да се реши този проблем. време за споделяне на нишките на системата работят за кратко време, а след това принудени; т.е. таймер периодично причинява на операционната система да се възстанови реши кои нишки, за да бъде изпълнена, потенциално спиране на потока вече работи, и работи с други, които са били спрени. Той дори позволява един процесор да изпълнява множество нишки. На компютър интервали от време от порядъка на 55 милисекунди.
Защо да използваме конци?
Потоци не трябва да променят семантиката на програмата. Те просто променят операциите по време на изпълнение. В резултат на това те са почти винаги се използва за елегантни решения на проблемите, свързани с дейността. Ето някои примери за ситуации, при които могат да се използват потоци:
Изпълнение на дългодействащ: когато приложението е изчисления, той не отговори на съобщението, в резултат на не се актуализира екран.
Извършване на фоново: някои задачи, които не са във времето критична, но трябва да се извършва непрекъснато.
Извършване на действия, входно-изходни (I / O): работа с диск или мрежа може да доведе до неопределен срок. Потоци ще позволи в такива случаи не спира изпълнението на други части на програмата.
Всички тези примери са по-чести: някои от действията по програмата може да доведе до потенциално голямо закъснение в работата на процесора, неприемливи за другите дейности, които трябва да прекарат в момента. Разбира се, има и други предимства, като:
На многопроцесорни системи с едно заявление поток няма да се използват два или повече процесора! В глава 3, това се обяснява по-подробно.
Един ефективен разделяне на времето: използване на приоритетите на процеси и нишки, за да се осигури по-правилното използване на процесорно време.
Wise използване на потоци се бавно, зле си взаимодействат с програмата на потребителя бърз и удобен, ефективен и може значително да подобри производителността, така и лекота на използване.