Avatar billede tokelil Nybegynder
20. juli 2005 - 14:46 Der er 1 kommentar og
1 løsning

Korrekt afslutning a Windows tråd

I en dll jeg har skrevet oprettes en tråd og jeg gemmer dens handle (hThread) i en variabel. Tråden ser ud som følger:
while (bIsRunning)
{
  ...
}
// Do clean-up

Når jeg vil afslutte tråden sætter jeg bIsRunning = false og venter på tråden afsluttes med: WaitForSingleObject(hThread, 2000)
Herefter lukker jeg handle med CloseHandle(hThread).

Mit spørgsmål er rimeligt simpelt... Er dette korrekt måde at afslutte tråden på?
WaitForSingleObject(hThread) vil blive korrekt "signaled" når tråden afslutter? Ville det være en fordel at have CloseHandle() som sidste del af tråden eller skal den holdes uden for?

På forhånd tak! (Vil lige være sikker på jeg ikke leaker resourcer/handles)
Avatar billede amma Nybegynder
21. juli 2005 - 19:04 #1
Det kan sagtens være en løsning. Det kommer jo helt an på dit program design/egne preferencer osv.

'CloseHandle()' kan f.eks. sagtens (og med fordel) blive aktiveret fra selve tråden.

Den korrekte måde er selvfølgelig at lave en 'CThread' klasse med en 'Close' funktion.


Mvh.
Asger
Avatar billede tokelil Nybegynder
25. juli 2005 - 21:12 #2
Tak for svaret. (Og undskyld det kom til at ligge ubesvaret så længe)

Ved du om WaitForSingleObject(hThread, 2000) blive trickeret når tråden (hThread) slutter eller når hThread = INVALID_HANDLE_VALUE ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester