Forum: Win32/Win64 API (native code)
by jaenicke,
19. Jun 2018
Warum sollte man denn einen solchen run-and-forget Thread suspended erzeugen?!? Der bekommt alle notwendigen Parameter und legt sofort los.
(Ich sehe generell keinen Sinn darin suspended zu erzeugen, egal was für ein Thread das ist. Entweder man braucht den Thread jetzt, dann kann er auch gleich loslegen oder man braucht ihn noch nicht, dann braucht man ihn auch noch nicht erzeugen.)
Aber...
Forum: Win32/Win64 API (native code)
by jaenicke,
19. Jun 2018
Das ist ja genau die Idee hinter der von mir vorgeschlagenen Queue, nur dass man damit die abzuarbeitenden Daten besser steuern kann als mit ein paar Flags.
Es kommt natürlich immer darauf an was man genau braucht, das kann man von außen nicht genau sagen.
Forum: Win32/Win64 API (native code)
by jaenicke,
18. Jun 2018
Wenn du FreeOnTerminate setzt, darfst du den TThread nicht in eine Variable (Thread1) speichern. Denn da du nicht weißt wann dieser freigegeben wird, darfst du auch nicht mehr darauf zugreifen.
Wenn du den Thread später noch ansprechen möchtest, darfst du FreeOnTerminate nicht setzen.
Forum: Win32/Win64 API (native code)
by jaenicke,
17. Jun 2018
Das würde ich anders lösen. Ich würde das ganze in Pakete aufteilen, die abzuarbeiten sind. Die Größe der Pakete hängt davon ab wie lange es dauert diese zu bearbeiten. Auf die Weise kannst du schnell unterbrechen, auch wenn immer das komplette Paket bearbeitet wird.
Die einzelnen Pakete kannst du dann in eine Queue packen, der Thread holt sich dann jeweils immer das nächste Paket heraus. Die...
Forum: Win32/Win64 API (native code)
by jaenicke,
17. Jun 2018
Die Kommunikation könnte z.B. per TEvent passieren, aber ich frage mich warum der erste Thread nicht auch diese Aufgabe übernimmt, wenn er seine Aufgabe derweil ohnehin nicht fortsetzen soll. Wer startet denn den zweiten Thread? Der erste Thread?