Re: Problem, duzy problem

Autor: Wojciech Gazda (gazda_at_fema.krakow.pl)
Data: Tue 26 Sep 2000 - 21:28:57 MET DST


Krzysztof Pawłowski napisał(a):
>
> A propos progamowania (przepraszam za przerwe), chodzi o
> wielowatkowosc...
>
> Jezeli utworze sobie nowy watek i przypisze ja do jakies funkcji, ktora
> bedzie
> dzialac do jakiegos tam ustalonego momentu np:
>
> void nazwa_funkcji()
> {
> while( !programKoniec )
> { }
> }
>
> Program zwalnia DIAMETRALNIE. Nie mowiac juz o samym systemie. Mozna
> oczywiscie zmniejszyc priorytet i ustawic klase watku na IDLE, ale to
> nie duzo daje.
>
> Ktos pisal wielowatkowe programy? Uzywam kompilatora WATCOM, moze
> to dlatego?

Watek nie moze sie bezczynnie obracac w petli bo to zamula system.
1. Program glowny tworzy watek, ktory robi co trzeba po czym sie konczy
(_endthread()).
2. Program glowny tworzy watek, ktory robi co trzeba po czym zawisa na
semaforze (czeka). Program glowny gdy ma potrzebe przestawia semafor
puszczajac watek ktory znowu cos robi po czym sie zatrzymuje na
semaforze, itd. To samo mozna zrobic uzywajac kolejek komunikatow (z
seri Dos* lub Win*) i rurek, co ma dodatkowa zalete, ze mozna
przekazywac jakies dane.
3. Mamy cos robic np. co 1s. Nalezy uzyc albo DosSleep po kazdym
wykonaniu tego co ma byc zrobione, albo DosAsyncTimer (nie pamietam
dokladnie) skojarzony z semaforem, ktory bedzie "puszczal" watek co
okreslony czas.
4. Manipulacja priorytetami - ale to nieduzo daje...

-- 
Wojciech Gazda
/*******************************************************/
/* Home page        - http://www.fema.krakow.pl/~gazda */
/* Asua programmers - http://www.asua.org.pl           */
/*******************************************************/


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:28:23 MET DST