Avatar billede garlan Nybegynder
22. september 2003 - 12:33 Der er 6 kommentarer

Multitasking med Threads

Hej!

Jeg er igang med et MFC projekt! programmet som jeg er ved at udvikle skal læse og skrive til en buffer i en driver! jeg har lavet en thread der hele tiden poller om der er noget data i bufferen.

mit problem er: hvordan sender jeg dataene som læses fra bufferen videre til mit main program.

Jeg ved at der findes flere forskellige måder at kommunikere imellem threads. Men hvordan kan jeg checke om en thread modtaget nogen data uden at få main programmet til at hænge i en while løkke!
Avatar billede jpk Nybegynder
22. september 2003 - 12:55 #1
Der er flere mulige løsninger, fx:

1) Thread'en sender messages til dit mainwnd, altså AfxGetMainWnd()->SendMessage(...)

2) Du giver thread'en en pointer med til et objekt den kan skrive i

3) Du kan også lade bufferen sende notifications (messages) ved ændringer som read/write
Avatar billede x-masman Nybegynder
22. september 2003 - 13:02 #2
Det mest logiske ville vel være at implementere en række semaforer.
Avatar billede jpk Nybegynder
22. september 2003 - 13:06 #3
Tja, det synes jeg nu ikke...
Jeg foretrækker pkt. 1 eller 3 af ovenstående.
Avatar billede bertelbrander Novice
22. september 2003 - 20:17 #4
Når man sender en besked fra en thread til en anden, bør man bruge PostThreadMessage().
Jeg lavede for nyligt en lille demo app med MFC der viser hvordan man bruger den:
http://home20.inet.tele.dk/midgaard/t3.zip
Avatar billede garlan Nybegynder
23. september 2003 - 11:17 #5
Hej

Jeg takker jer alle for jeres kommentarer!
Jeg løste problemet ved at, lave en class med nogle member variabler og funktioner, som kunne hente data fra bufferen i driveren og tilskrive member variablen med den udlæste værdi.
Brugte Critical section til at styre mine threads og postmessage til at
fortælle main programmet, hvornår der er blevet hente data fra bufferen!
Avatar billede x-masman Nybegynder
30. december 2004 - 13:50 #6
Så må du nok hellere lukke
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