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

Откъде знаеш, че броят на конци работи в даден момент

Съжалявам, това, което за вас, за да се противодейства на процесите? разгледа потоци. създавате - вие и брои. а Inc () и декември () се регистрирате?


> За да се ограничи броя # XA0, например до 16-32

благоприятства семафор


> Да не се изплаши човек. % -)

Висока свикнали.
Аз ще го завършим дори:

Semaphore: = CreateSemaphore (нула, 4, 4, нула);

за Loop: = 0 до FDevices.Count - 1 направи
# XA0; с FTask правя
# XA0; # XA0; Threads.Add (TSendThread.Create (път, FDevices [Loop], Message.Files, Settings.vCard.Get, Settings.vCard.Put, vCardFileName, семафор, FTask.Message.ID));

# XA0, докато Threads.Count> 0 започвайте
# XA0; # XA0 ;. TThread (Threads [0]) чакайте;
# XA0; # XA0; Threads.Delete (0);
# XA0; край;

И в потока след завършване:


ReleaseSemaphore (FSemaphore, 1, нула);

Послепис Само не питам от къде идва и защо това е така. За дълго време, аз ще обясня.

> П.П. Само не питам от къде идва и защо това е така.
Аз няма. аз и без обяснение е страшно. % -)

> За съжаление, това, което за вас, за да се противодейства на процесите? разгледа потоци. създавате - вие> и се брои. а Inc () и декември () се регистрирате?

> [6] изображение # XA0; (10.11.06 03:05)

Е, да се създаде специална потоци клас мениджър. той ги пусна, и създава и казва, отлага създаването на следното, ако е необходимо. Какъв е проблемът?

зашеметен. скрие. и по-добре да изгори.
а) Защо фигурата да се определи името на отделна нишка, ако Ping вече е свършена? можете да използвате едни и същи;
б) е ясно, че в цикъла. като пречи на гишето има?

> Е, да се създаде специална потоци клас мениджър. той ги остави, и> създава и обмисля отлагане на създаването на следното, ако е необходимо. В> Какъв е проблемът тогава?

# XA0; Проблемът е, че аз едва наскоро започна да се справят с тези потоци, и не знам как да го направя. Ако можете да podskzhite или даде препоръка, където можете да прочетете как да се създаде този мениджър потоци.

Джо, защо не. ви посъветва - може и обяснява. % -)

> Ако можете да podskzhite или даде препоръка, където можете да прочетете
> Как да се създаде този мениджър потоци.

Това е само едно абстрактно понятие.
Идеята е, че при създаване на насрещен поток се увеличава с 1. В унищожаването на, съответно, 1 намалява. Това е всичко. Клас тук само да се съберат тези манипулации в един изчисти името мястото в кода, че не е задължително и не са в него.

<обалдеть. спрячь. а лучше сожги.
<а) на кой фиг определять имя в отдельном потоке, если пинг уже <закончен? можно тот же самый использовать;
<б) понятно, что в цикле. как это мешает иметь счётчик?

а) Да, наистина
б) да се каже, че току-що започна да се учи с конци, така че моля помогнете, ако дори можете да бъдете намек за това как да се направи този брояч

> Ако това може да бъде дори и намек за това как да се направи този брояч

Counter - е променлива от тип цяло число. Нарастване на гишето може процедура Inc или оператор +. Zoom - операторът - или процедурата декември Какъв е проблемът по-точно?

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

преди приключване на индикатора на гореспоменатия поток трябва да бъде намалена.

всичко. за постигане на груб реализация достатъчно.

> Идеята е, че при създаване на насрещен поток се увеличава с 1. Когато> унищожаване, съответно, на 1 намалява. Това е всичко. Клас тук само> за тези манипулации да се съберат в една ясна Кръстен> в кода, че не е задължително и не са в него.

Е, със създаването на ясна, но след това как да знам, че количеството на потока намалява? Аз разбирам, че те се извършват всеки от свое виртуално пространство на паметта и да знаят един за друг не знам нищо. Как да разбера, че поток е завършена? Има някаква процедура или функция?

> Аз разбирам, че те се извършват всеки по свой собствен виртуален
> Пространство на паметта и да знаят един за друг не знам нищо.

В TThread събитие OnTerminate.

> В TThread имат OnTerminate събитие

И как се да хвана OnTerminate

По дяволите, това е гръбнакът. Разработване по свое усмотрение.

# XA0; TThreadClass = клас TThread;

# XA0; TThreadManager = клас
# XA0; частен
# XA0; # XA0; FMaxThreads: цяло число;
# XA0; # XA0; FThreadsCount: цяло число;
# XA0; # XA0; процедура OnThreadTerminate (Sender: TObject);
# XA0; обществен
# XA0; # XA0; // в конструктора определя допустимия брой едновременно
# XA0; # XA0; // предавания
# XA0; # XA0; конструктор Създаване (AMaxThreads: Integer); повторно въвеждане;
# XA0; # XA0; // създава нишка от съответния клас,
# XA0; # XA0; // ако тяхното количество надхвърля допустимия чакането, докато не бъде намалена
# XA0; # XA0; процедура CreateThread (AThreadClass: TThreadClass);
# XA0; край;

конструктор TThreadManager.Create (AMaxThreads: Integer);
започвам
# XA0; наследил Създаване ();
# XA0; FMaxThreads: = AMaxThreads;
# XA0; FThreadsCount: = 0;
приключи;

процедура TThreadManager.CreateThread (AThreadClass: TThreadClass);
Var
# XA0; ANewThread: TThread;
започвам
# XA0, докато FThreadsCount> = FMaxThreads задачи
# XA0; # XA0; Application.ProcessMessages;

# XA0; InterlockedIncrement (FThreadsCount);
# XA0; ANewThread: = AThreadClass.Create (True);
# XA0; ANewThread.OnTerminate: = OnThreadTerminate;
# XA0; ANewThread.Resume;
приключи;

процедура TThreadManager.OnThreadTerminate (Sender: TObject);
започвам
# XA0; InterlockedDecrement (FThreadsCount)
приключи;

Аз не мисля, че по това време на нощта има такъв писане на ужасите.

> Аз не мисля, че по това време на нощта има такъв писане на ужасите.

Благодаря на всички ви, и Джо Много благодаря!


> Много благодаря на Джо

Хау! От сега нататък, Джо е дадено името "Джо Много благодаря!" С новата кръщението, Seryoga. -) Tribe imedzha няма да те забравя. -)

Да, дори и в най-първия въпрос аз попитах объркана - "Моля те, кажи ми как да се създаде брояч стартираните процеси" изглежда nedoperechitalsya

Подозирам, че същите тези потоци не са ви нужни - F-ТА за протокола ICMP и прилагат асинхронно случай употреба.

Колко странно, конци, и невъзможността за осигуряване на основни брояч гримаси образование.

Разбира се, че не е необходимо, това не е Indy и ICS не е първоначално изисква никакви потоци, те са вредни. Това асинхронни събития задвижва компоненти - един основен поток и събития, отговорници стартирани и да продължат да работят, ще бъдат събитие # XA0; - регулиране на усилването.

> Как странно, потоци и невъзможността за осигуряване на основни брояч> гримаси образование.

Момчета, моля не се рита краката си, защото # XA0; отидох на форума за начинаещи! Нищо лошо в това, че хората са готови да се учат там. # XA0; И на броя на брояч (управление на потока) на, не мога да кажа, че най-страшният се обърна към управителя :-). След като прочетете кода (благодарение отново на Джо), за да се разбере.


> Подозирам, че двата потока са едно и също не е нужно - Fct
> За да работите с ICMP протокол и прилагат асинхронно вариант
> Ползване.

Аз също подозирам, че използването на ICMP щеше да е много по-добре, но не и когато е видял добро описание на инди компоненти. В много примери за интернет, но има толкова - постави на формата TLabel, TMemo, TButton и копирайте това парче koda.Vse.Programma готов. Понякога дори и да вървят. И това, което той се инициализира, преди да използвате компонента - един ред. Бих искал да се разбере как работи, а не тъпо копирате части от код.

+-1 не е на нивото на начинаещ, това е по-ниска.

изображение # XA0; (10/11/06 19:50) [33]
Същото е и с Indy - Поставете компонент на формата и вида на този код, ако изобщо е необходимо.

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


> Докато FThreadsCount> = FMaxThreads задачи
> # XA0; # XA0; Application.ProcessMessages;

Винаги се чудеха как хората lyuit глобални променливи и ядат процесорно време :)
На семафори не ви са доволни? Или чичо ги Били за измислена им забавление.

добре
> + -1 не е нивото на начинаещи е по-ниска.

Е, правя те тогава форум за "начинаещи започват опитвам да разбера програмирането в Делфи" :-)


> Е, правя те тогава форум за "начинаещи започват опитвайки
> Разбиране на програмирането в Делфи ":-)

Така че вече предлагаме - "Nadmozgi".
Гласувай! Кой за?


> Или още по-близо - на кода [4], която, както може да се види,
> Е взета от работния проект. Да, но няма място за него.

От абсолютна работи.
И защо той не е там. Или пък са толкова ravity телепатични способности, които можете да видите всички от кода от разкъсан парче и прогнозират това, което е все още да се направи и защо това е направено така?

Не на последно място, защото това try..finally блок за съжаление липсва, и места, където може да се прави изключение - достатъчно.


> Поне защото try..finally блок за съжаление липсва,
> # XA0 и места, където може да се прави изключение - достатъчно

Хайде! Никога не съм вярвал в телепатия.
Не. Разбира се, че нямам try..finally. Но има опитам. с изключение. (Странно, не е pravdali).
И все пак. Повярвайте ми, там е 100% грешка няма да се случи, но за да не се създава поток, което е изключително малко вероятно.

Така че - тренира telepator допълнително.

Послепис Не се правят изводи за soderdimom на програмата (код) за много малък си парче.

Така че не носят една малка част от кода се отдава достатъчно.

Е, код ми е написана и # XA0; позиция, за да се докаже, че съм бил ", наречен" мениджър, както и че има "брояч" за думите, за да го обясни на отчаяние. И ако се съди по него за любовта ми за "глобални променливи" - не по-малко нелепо.


> Е, код ми е написана и # XA0; поставя да демонстрират
> # XA0; бях ", наречен" мениджър, както и че има "брояч" за по
> Отчаяни думи, за да го обяснят. И ако се съди по него за моята любов
> Към "световния променливите" - не по-малко нелепо.

Буквално, това е писано:

> Винаги се чудеха как хората lyuit глобални променливи
> Време наливам CPU

И на този форум (и не само на zhtom) винаги се дава на начинаещите като правилни и добър стил на програмиране на управлението на ресурсите. Сега съм прекалено мързеливи, за да се събере с лопата всички тези съвети. Но те не са достатъчни.

Все пак, това не е правилно и добър стил. Той няма желание да се напряга и прочетете документацията.

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

Послепис ако

> Е, какво да кажем за любовта на глобални променливи - е на чичо
> Borland
,
Аз не виждам причина да се имитират такива глупости без никаква основателна причина за използването на глобални променливи, защото тези неща се простира от много древни времена. Или Borland станахме standortom пишете приложения за Windows?

И мина се поставя, като цяло, както се досещате.

И познайте какво, ти направи лична кореспонденция / схватка

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

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