ПредишенСледващото

Така че това е основната характеристика в потоците, че те могат да работят почти успоредно (или псевдо научни) е почти, но не съвсем. Всъщност, истинската паралел е възможно само в многопроцесорна машина (2 или повече Proca). Но WINDOWS, може да симулира този вид работа (и не я обвинявам в това, ако вината, а след това се чете по-горе), т.е. то (Windoz) за всяка нишка излъчва малко количество от процесор (например няколко милисекунди), при изтичането на този период дава работа vidous друга тема след това на следващия и така нататък. И вероятно бихте могли вече предполагам, за всяка нишка, за да се определи подходящ приоритет на изпълнение. Казано по-просто, когато писането на код, можем да определите колко често системата трябва да се разпределят потока на процесорно време. Как да направите това, ще бъдат обсъдени по-долу.

Бих искал също така да се отбележи, че Inprise Corporation не препоръчва програмата за създаването на повече от 16 теми, ако програмата работи на един процесор машина.

На тази теория вероятно може да завърши и да отидете в най-програмиране. Многонишковата софтуер (програмен продукт -Какво добра фраза).

Стъпка 2: Създаване на ново заявление (File-> New Application).

Етап 3. Във формуляра, който се появява хвърли един бутон (за мен това е най-BUTTON1) и две рисунка област (за мен това ще бъде PaintBox1 и PaintBox2 съответно).

Стъпка 4. В основната форма модул ще опише нов метод (за мен това ще бъде gtextout), който като параметър ще получите платно и да доведе до това, на всяко място, всеки символ (за мен това ще бъде "@" без кавичките, съответно).

Стъпка 4.1. Помислете за подробности как да се приложи на практика, посочените по-горе ефект.

Ще се създаде нова процедура. Напиши в процедура gtextout (CNV. TCanvas) пред тях лично. Тогава Davie както е писано, щракнете с десния бутон и изберете която се появява в менютата "Comlete клас на курсора" (по мое мнение, така е писано (Само Delphi3 etogo все още)).

Ако сте направили всичко правилно, трябва да видите следното:

Отидете по-далеч. Между започват и завършват на listinga1 писане на код.

Мисля, че в по-подробно обяснение listing1 няма нужда, освен да кажа точно това, което метод TextOut като цяло ще има следната форма TextOut (koordinata_po_H, koordinata_po_Y, vyvodimyy_simvol_); (Само не забравяйте, че можете да използвате метод TCanvas обект, и които ще бъдат причинени от едно и също име API функцията TextOut на търсенето, което също има за цел да покаже текст, но се различава по броя и вида на параметрите).

Сега дори монтиране на 2 процедури по-горе процес само в първата

Между започват и завършват впише gTextOut (PaintBox1.Canvas), а вторият gTextOut (PaintBox2.Canvas). На практика, тя трябва да изглежда по следния начин:

Тези методи са като параметър на платно и след процедурата показва gTextOut куче на този платно (@). Така че, защо правим толкова?

Факт е, че при методите за клас се наричат ​​едновременно от множество нишки, това може да доведе до нежелани последици. Такива проблеми могат да получат по време на бързата обработка на редуване на изхода на процеса на изображението на екрана, когато е необходимо системата да се справят с обекти от други класове.

И сега се пристъпи към факта, заради това, което ние сме тук, че е да се създаде поток. Кликове File-> новообза-> Тема Object.

В отворилия се диалогов прозорец, името на точката за клас от TMyThread. Този клас воля наследник TThread клас поток. След това има празен файл с описанието на класа.

Така че сега обратно към нашите възможни грешки (Punkt1) и ви poimeesh защо ние създадохме две "екстра" лечения. За да се избегнат подобни грешки (прочетете Punkt1) в класа на тема определя метода на гарантиран-безопасно извършване на тези методи. Този метод е отговорен за синхронизирането на всички потоци. И като параметър получава само името на метода. Това е всичко за това и ние трябва да се създадат две процедури. Ето описание на метода на синхронизация:

Отидете по-далеч. Но тук е друг проблем за начина на определяне на потока вътре метод трябва да бъде извикана в момента? За да отговорим на този въпрос, ние се въведе булева променлива наречена W. След това със създаването на конци си например настроен на TRUE, ако това е необходимо да се извърши OUTD1 метод, и FALSE ако OUTD2 съответно.

Процесът се е описан в работата тече неговия метод Execute. След първостепенни този метод, ще получите следното.

Така че това, което имаме тук е то. SvoystvoTerminated получава TRUE, когато програмата получава стойност за приключване на работата. => Ние ще работим до приключване на програмата. След това, ако w = вярно, тогава наречен OUTD1 процедура, в противен случай OUTD2.

Сега, в частта за изпълнението, пише следното: използва единица1; (Свързване module1);

Сега е ред на първия една единица (единица1) .Свържете Uni2. След това изгради своя манипулатор за събитие за BUTTON1, и ще го напиша в Обява 2.

Какво сме направили тук? В съответствие, ще опишем две, тя е нашето бъдеще потоци. Линията ние създаваме нова тема, като се използва метод, който има един параметър създаване, тя е настроена на True, ако потокът започва след извикването на метода на автобиография и False, ако потокът ще започне веднага след нейното създаване. Онлайн зададена стойност на променлива W Най-(помните този жест) .В линия приоритет, определен за даден поток.

Възможните стойности за измененията на свойствата, изброени по-долу:

tpTimeCritical - Максимален приоритет
tpHighest - Приоритет 2 точки над нормата
tpHigher - Приоритет 1 точка над нормалното
tpNormal - Нормален приоритет
tpLower - Приоритет 1 точка по-долу нормално
tpLowest - Приоритет 2 точки по-долу нормално
tpIdle - Потокът се изпълнява, когато операционната система няма нищо общо

Послепис Е, като всичко. Пример, макар и проста, но все пак информативно. Може би дори да даде малко съвети. Имате ли моя код малко завой, но можете да го опитате нещо да се промени, да премахнете нещо или да добавите собствените си и след това да видите, че можете да го направите, то ще бъде много по-полезно, ако се чете и да си кажете скъсен ясно! и да забравите за нея. Като цяло, изборът е ваш. Мога да кажа само Houde @ Чи в кодиране, при момичетата (глупаво го добре, което означава, че разбирате), както и голям Houde @ Chi Sessions (ако сте студент, като мен). ... Ако имате някакви въпроси, а след това да напишете ([email protected]) ще се опита да отговори. Чао.

От: Litex [[email protected]]

Вземете например изходния код тук:

Свързани статии

Подкрепете проекта - споделете линка, благодаря!