Honnan tudod, hogy a szálak számát fut egy időben

Honnan tudod, hogy a szálak számát fut egy időben

Sajnos mi az Ön számára, hogy megakadályozza a folyamatokat? úgy áramlik. létrehoz - akkor és számolni. Egy Inc () és december () alá?


> Számának korlátozása # XA0; például legfeljebb 16-32

kedveznek szemafor


> Ne megijeszteni egy személy. % -)

Nagy hozzászoktak.
Fogom befejezni még:

Szemafor: = CreateSemaphore (nil, 4, 4, nulla);

Loop: = 0 FDevices.Count - 1 do
# XA0, azzal FTask do
# XA0; # XA0; Threads.Add (TSendThread.Create (Path, FDevices [Hurok], Message.Files, Settings.vCard.Get, Settings.vCard.Put, vCardFileName, Semaphore, FTask.Message.ID));

# XA0 míg Threads.Count> 0 do kezdődik
# XA0; # XA0 ;. TThread (Szálak [0]) waitfor;
# XA0; # XA0; Threads.Delete (0);
# XA0; end;

És a falon befejezésekor:


ReleaseSemaphore (FSemaphore, 1, nulla);

Ui Csak ne kérdezd, hogy honnan jött, és miért van így. Hosszú ideig fogom magyarázni.

> Ui Csak ne kérdezd, hogy honnan jött, és miért van így.
Nem fogok. én és magyarázat nélkül ijesztő. % -)

> Sajnos, mi az Ön számára, hogy megakadályozza a folyamatokat? úgy áramlik. létrehoz - ha> és számolni. Egy Inc () és december () alá?

> [6] image # XA0; (10.11.06 03:05)

Nos, hogy hozzon létre egy különleges besorolású menedzser patakok. hagyta őket, és megteremti, és azt mondja, elhalasztja a létrehozását a következő, ha szükséges. Mi a probléma?

megdöbbent. elrejteni. és jobb éget.
a) Miért ez a szám határozza meg a nevét egy külön téma, ha Ping már befejeződött? használhatja ugyanazt;
b) egyértelmű, hogy a ciklusban. mivel megakadályozza a számláló van?

> Nos, hogy hozzon létre egy különleges besorolású menedzser patakok. hagyta őket, és> teremt, és úgy véli elhalasztását létrehozását a következő, ha szükséges. A> Mi a probléma akkor?

# XA0; A probléma az, hogy én csak a közelmúltban kezdtek foglalkozni ezekkel a hullámok, és nem tudom, hogyan kell csinálni. Ha tud podskzhite, vagy ad egy hivatkozást, ahol elolvashatja, hogyan kell létrehozni menedzser patakok.

Joe, miért nem. tanácsot - és elmagyarázza. % -)

> Ha podskzhite, vagy ad egy hivatkozást, ahol elolvashatja
> Hogyan hozzunk létre menedzser patakok.

Ez csak egy elvont fogalom.
Az elképzelés az, hogy létrehozásakor egy számláló áramlás növekedett 1. pusztulása, illetve 1 csökken. Ez minden. Class itt csak gyűjteni ezeket a manipulációkat egyetlen törölje a megnevezett helyet a kódot, de nem kötelező, és nem volt benne.

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

a) Igen, tényleg
b) azt mondják, hogy csak most kezdett el tanulni szálak, ezért kérem, segítsen, ha lehet még egy csipetnyi, hogyan lehet ezt a számlálót

> Ha ez is lehet egy csipetnyi, hogyan lehet ezt a számlálót

Counter - egy változó egész szám jellegű. Növeljük az számláló Inc eljárás vagy üzemeltető +. Nagyítás - az üzemeltető - vagy az eljárás december Mi a probléma pontosan?

logikus, hogy szükség van, hogy ellenőrizze a számláló értéke létrehozása előtt egy új szál, és ha lehetséges: növelni a számláló; patak létrehozni.
ha nem lehetetlen - várni, amíg ez lehetséges.

befejezése előtt a fent említett áramlásmérő csökkenteni kell.

mindent. nagyoló megvalósítás elég.

> Az elképzelés az, hogy létrehozásakor egy számláló áramlás növekedett 1. Amikor> megsemmisítése, illetve per 1 csökken. Ez minden. Osztály, itt csak a> Az ilyen műveletek összegyűjteni egyetlen világos Nevezett> a kódot, de nem kötelező, és nem volt benne.

Nos, a létrehozását világos, de akkor hogyan tudod, hogy az összeget a flow csökkent? Megértem, hogy ők végzik mindegyik a saját virtuális memóriát használ, és hogy tudjanak egymásról semmit nem tudok. Honnan tudom, hogy egy patak befejeződött? Van valamiféle eljárás vagy függvény?

> Úgy tudom, hogy ők végzik mindegyik a saját virtuális
> Memória tér és tudjanak egymásról semmit nem tudok.

A TThread esemény OnTerminate.

> A TThread van OnTerminate esemény

És hogyan kell fogni OnTerminate

A francba, ez a gerincét. Fejleszteni saját belátása szerint.

# XA0; TThreadClass = osztálya TThread;

# XA0; TThreadManager = osztály
# XA0; magán-
# XA0; # XA0; FMaxThreads: integer;
# XA0; # XA0; FThreadsCount: integer;
# XA0; # XA0; eljárással OnThreadTerminate (Sender: TObject);
# XA0, köz-
# XA0; # XA0; // a kivitelező határozza meg a megengedett egyidejűleg számos
# XA0; # XA0; // élő közvetítések
# XA0; # XA0; kivitelező létrehozása (AMaxThreads Integer); visszaállíthatja;
# XA0; # XA0; // létrehoz egy szál a megadott osztály,
# XA0; # XA0; // ha azok mennyisége meghaladja a megengedett várakozási amíg nem csökken
# XA0; # XA0; eljárással CreateThread (AThreadClass: TThreadClass);
# XA0; end;

kivitelező TThreadManager.Create (AMaxThreads: Egész szám);
kezdődik
# XA0; örökölt létrehozása ();
# XA0; FMaxThreads: = AMaxThreads;
# XA0; FThreadsCount: = 0;
végén;

eljárás TThreadManager.CreateThread (AThreadClass: TThreadClass);
var
# XA0; ANewThread: TThread;
kezdődik
# XA0 míg FThreadsCount> = FMaxThreads do
# XA0; # XA0; Application.ProcessMessages;

# XA0; InterlockedIncrement (FThreadsCount);
# XA0; ANewThread: = AThreadClass.Create (True);
# XA0; ANewThread.OnTerminate: = OnThreadTerminate;
# XA0; ANewThread.Resume;
végén;

eljárás TThreadManager.OnThreadTerminate (Sender: TObject);
kezdődik
# XA0; InterlockedDecrement (FThreadsCount)
végén;

Én nem hiszem, hogy ebben az időben az éjszaka egy ilyen horror írásban.

> Én nem hiszem, hogy ebben az időben az éjszaka egy ilyen horror írásban.

Köszönöm az összes, és Joe Sok köszönet!


> Sok köszönet Joe

Hau! Mostantól kezdve, Joe kapta a nevét „Joe Sok köszönet!” Az új keresztség, Seryoga. -) Törzs imedzha nem felejtem el. -)

Igen, még a legelső kérdés, amit feltett zavaros - „Kérem, mondja meg, hogyan lehet létrehozni egy számláló futó folyamatok” Úgy tűnik, nedoperechitalsya

Gyanítom, hogy ugyanezek a patakok akkor nem kell - f-CIÓ az ICMP protokoll és végrehajtása aszinkron használat esetén.

Milyen furcsa, szálak, és a képtelenség, hogy az alapvető számláló fintorog oktatás.

Persze nem kell, hogy ez nem Indy, és ICS kezdetben nem igényel semmilyen patakok, ők káros. Ez aszinkron eseményvezérelt komponens - az egyik fő stream és eseménykezelőkkel indított, és továbbra is működik, lesz egy esemény # XA0 - erősítés szabályozás.

> Hogyan furcsán áramlik és a képtelenség, hogy az alapvető számláló> fintorog oktatás.

Srácok, ne rúgni a lábát, mert # XA0; Elmentem a fórum kezdőknek! Nincs ezzel semmi baj, hogy az emberek szívesen tanulnak ott. # XA0; És a gróf a számláló (flow menedzsment), azt mondhatjuk, hogy a legborzasztóbb fordult a menedzser :-). Miután elolvasta a kódot (köszönhetően ismét Joe), hogy megértsék.


> Gyanítom, hogy mindkét áram ugyanaz akkor nem kell - fkc
> Együttműködik ICMP protokoll és végrehajtása aszinkron megvalósítási módja
> Használata.

Azt is gyanítják, hogy az ICMP lett volna sokkal jobb, de nem, ha látott egy jó leírást indie alkatrészeket. Sok példát az interneten, de vannak olyan - az űrlapon TLabel, TMemo, TButton, és másolja ezt a darabot koda.Vse.Programma kész. Néha még működik. És mit inicializálni használata előtt az alkatrész - egy sorban. Szeretném megérteni, hogyan működik, és nem tompán másolja darab kódot.

+-1 nem a szint egy kezdő, ha kisebb.

kép # XA0; (10.11.06 19:50) [33]
Ugyanaz Indy - Tedd az alkatrészt a formáját és típusát ezt a kódot, ha valaha szükség.

A többi, könnyen érthető - mindezt a forráskódot, hogy megértsék a legtöbb vidám, csak egy vágy, hogy van erő és meg kell érteni, hogy itt vagyunk, miért, akkor mindent a számítógépen.


> Miközben FThreadsCount> = FMaxThreads do
> # XA0; # XA0; Application.ProcessMessages;

Mindig is érdekelt, hogy az emberek lyuit globális változók, és enni CPU időt :)
A szemaforok Nem örülsz? Vagy Billy bácsi nekik szórakozást találni.

jól
> + -1 nem a szintje egy kezdő ennél alacsonyabb.

Nos, igaz, akkor fórum „kezdők kezdeni, hogy kitaláljam, a programozás Delphi” :-)


> Nos, igaz, akkor fórum „kezdőknek indul próbál
> Ismerje meg a programozás Delphi „:-)

Így már hez - „Nadmozgi”.
Szavazz! Ki az?


> Vagy még közelebb -, hogy a kód [4], amely, mint látható,
> Venni a munkaterv. Igen, de nincs hely a számára.

Az abszolút működik.
És miért nem tartozik oda. Vagy te olyan ravity telepatikus képességekkel, hogy láthatjuk az összes kódot a kitépett darabot, és megjósolni, hogy mi van még a teendő, és hogy miért tette?

Nem utolsósorban azért, mert try..finally blokk sajnos hiányzik, és olyan helyekre ahol jöhet kivételével - elegendő.


> Legalább mert try..finally blokk sajnos hiányzik,
> # XA0 és ahol lehet jönni kivételével - elegendő

Gyerünk! Én még soha nem hitt a telepátia.
Nem. Természetesen nincs try..finally. De van egy próbát. kivéve. (Furcsa, nem pravdali).
És mégis. Hidd el, van 100% hiba nem fog megtörténni, de nincs áramlás jön létre, amely rendkívül valószínűtlen.

Így - a vonat telepator tovább.

Ui Ne következtetéseket levonni a program soderdimom (kód) az ő kis darab.

Tehát nem hogy egy kis kódrészletet, hogy elegendő.

Nos, a kód volt írva, és # XA0; feltöltött bizonyítani, hogy én „az úgynevezett” vezetője, és hogy van egy „számláló” a szó, hogy magyarázza el a kétségbeesés. És ítélni neki a szeretet a „globális változók” - nem kevésbé nevetséges.


> Nos, a kód volt írva, és # XA0; feltöltött bizonyítani
> # XA0; én „az úgynevezett” vezetője, és hogy van egy „számláló” on
> Született szavakkal megmagyarázni. És ítélni neki a szerelem
> A „globális változók” - nem kevésbé nevetséges.

Szó szerint, mert meg van írva:

> Mindig csodálkoztam, hogy az emberek lyuit globális változók
> Zabál CPU időt

És ezen a fórumon (és nem csak zhtom) mindig adott kezdő, helyes és a jó stílus programozási erőforrás-vezérlő. Most én vagyok lusta lapáttal az összes ezeket a tippeket. De nem elég.

Azonban ez nem helyes, és jó stílusban. Ez nem a vágy, hogy a törzs, és olvasd el a dokumentációt.

A dogonku.
Semmilyen esetben nem akarom azt mondani, hogy a kód a megfelelő és jó programozási stílusban. Az íze és színe.
DE! Ha minden bizonnyal a helyes döntés, ajánlott az operációs rendszer szállítójának, nincs ok, hogy ne használja azt, és újra feltalálni a kereket. Nem hiszem, hogy a Microsoft programozók ostobább, mint nekünk.

Ui ha

> Nos, mi a szeretet a globális változók - az, hogy nagybátyja
> Borland
,
Nem látok okot arra, hogy utánozza az ilyen nonszensz nélkül ésszerű ok a globális változók használata, mert ezek a dolgok húzódik nagyon régi időkben. Vagy Borland lettünk standortom írásban Windows alkalmazások?

És én kerül, általában kitaláltad.

És tudod mit, akkor tett egy személyes levelezés / csetepaté

Kapcsolódó cikkek