Avatar billede Lasse Novice
18. november 2004 - 23:32 Der er 3 kommentarer og
1 løsning

Hvordan loeser man multithreading

Jeg er groen i faget, saa baer over med mine spg.

Jeg har en klasse der repraesenterer en seriel port. Skrivning og laesning foregaar i 2 forskellige klasser. Det jeg skal implementere er et skriv-meddelelse-og-derefter-laes-svar scenario.

Her er min pseudo kode:
class
{
  int age;

  GetAge()
  {
    WriteMessage()
    SuspendThread(threadname);
    return age;
  }
 
  function OnRead(byte[] data)
  {
    age = ToInt(data)
    ResumeThread(threadname);
  }
}

Det virker naar jeg tester det, men jeg vil formode at dette godt kunne gaa galt. Hvis ResumeThread naar at blive kaldt inden SuspendThread, saa er der problemer...

Hvordan loeser man saadanne en situation...
Avatar billede Lasse Novice
18. november 2004 - 23:33 #1
2 forskellige klasser = 2 forskellige metoder
Avatar billede landlordma Nybegynder
15. december 2004 - 09:26 #2
Du kan bruge klassen System.Threading.Mutex til at gøre det trådsikkert.

se: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemthreadingmutexclasstopic.asp

På denne måde kan kun en enkelt tråd tilgå en resource. Den lock'er intil den der færdig med at arbejde, for derefter at release. Dette kaldes også Mutual exclusion, eller populært Mutex ;)
Avatar billede Lasse Novice
16. december 2004 - 18:06 #3
Det ser godt ud. takker (et svar, og pointene er dine)
Avatar billede landlordma Nybegynder
16. december 2004 - 20:35 #4
Ok
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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