/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Tråd spørgsmål
Fra : Michael Vilhelmsen


Dato : 03-01-03 09:12

Hej

Jeg har lavet et program, som består af 2 forme og en tråd.

Min egne form, er min main form, som kun 4 knapper.
En til at starte tråden med, en til at stoppe tråden med, en til setup (min
anden form) og en til at sende en kommando med.

Min tråd står og kommunikere med noget udstyr forbundet på en COM port.
Denne COM port er sat op under setup formen.

Når jeg creater min tråd, bliver COM ports setupen "gemt" i lokale variabler
i tråden.
Lige efter create sætter jeg tråden priority til tpTimeCritical for at give
den mest muligt tid.

Det er nemlig sådan, at tråden SKAL kommunikere med mit udstyr hele tiden,
ellers får jeg fejl på mit udstyr.
Nu er det sådan, at min main starter, setup formen bliver dannet, hvorefter
jeg danner tråden, og starter den.

Nu kører kommunikationen.

Nu starter jeg et andet program, som ikke gør andet end at vente på noget
respons fra denne tråd (de kommunikere igennem nogle filer på harddisken).

Dette kan så stå og kører i nogle timer hvorefter kommunikationen stopper.


Mit spørgsmål går så på.

1. Kan man sætte nogen prioriteter på selve main formen også, således den
også får tildelt så meget tid som muligt ?

2. Når nu tråden er skabt, og har fået sat prioriteten, kører den så som et
"selvstændigt" program ?
Jeg tænker på, om den evt. vil blive påvirket af, at mainformen, som kar
skabt den måske ikke får tid nok ?

Michael





 
 
Finn Bindeballe (03-01-2003)
Kommentar
Fra : Finn Bindeballe


Dato : 03-01-03 15:13

hej der....

tror at det er dette du er paa jagt efter,......

....
....
ProcessHandle: = OpenProcess(PROCESS_SET_INFORMATION, 0,
GetCurrentProcessId);
SetPriorityClass (ProcessHandle, ABOVE_NORMAL_PRIORITY_CLASS);
CloseHandle (ProcessHandle);
....
....

skal indsættes et passende sted...(oncreate).....
'
/Finn Bindeballe


Casper A. Hansen (07-01-2003)
Kommentar
Fra : Casper A. Hansen


Dato : 07-01-03 10:16

"Michael Vilhelmsen" <smom22.remove_this_tekst@tdcadsl.dk> wrote in message news:<nBbR9.23834$Hl6.2530103@news010.worldonline.dk>...
> Lige efter create sætter jeg tråden priority til tpTimeCritical for at give
> den mest muligt tid.
Tjoe, jeg håber at for dig at tråden laver nærmest ingen ting, andet
end at vente på at der kommer data (læs: Den må ikke polle efter
data!)

> Det er nemlig sådan, at tråden SKAL kommunikere med mit udstyr hele tiden,
> ellers får jeg fejl på mit udstyr.
Normalt har COM-componenter ikke svært ved at læse fra porten ved
normal prioritet.

> Nu kører kommunikationen.
Fint nok, bruger programmet 100% CPU-tid eller bruger det nærmest 0%?

> Nu starter jeg et andet program, som ikke gør andet end at vente på noget
> respons fra denne tråd (de kommunikere igennem nogle filer på harddisken).
Okay, bruger det program 100% CPU-tid eller bruger det nærmest 0%?
Hvilken tråd i kommunikationsprogrammet skriver i filen i øvrigt?

> Dette kan så stå og kører i nogle timer hvorefter kommunikationen stopper.
Hvor opstår fejlen? Det er jo ikke gjort nemmere af at det er to
programmer der kører.

> Mit spørgsmål går så på.
>
> 1. Kan man sætte nogen prioriteter på selve main formen også, således den
> også får tildelt så meget tid som muligt ?
Hvorfor vil du dog det, så får din COM-tråd ikke tildelt så mange
resourcer?

> 2. Når nu tråden er skabt, og har fået sat prioriteten, kører den så som et
> "selvstændigt" program ?
Nej, den er et del af dit program, den har adgang til programmets data
osv. det er derfor man bruger critical sections hvis man deler data
mellem tråde.

> Jeg tænker på, om den evt. vil blive påvirket af, at mainformen, som kar
> skabt den måske ikke får tid nok ?
Nej, de to ting har ikke noget med hinnanden at gøre.

Hvis dine programmer står og poller efter data (dvs. køre i en loop
indtil data'ene er kommet) vil du får en meget dårlig performance på
hele systemet.
Hvis det er nødvendigt med at polle, anbefales det at bruge en Sleep i
loop'en.
Man kan undgå at polle ved at bruge TEvent som også kan virke på tværs
af programmer.

/Casper

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste