Techster Skrevet 6. august 2009 Del Skrevet 6. august 2009 Skulle gjerne gjort slik at en tråd i programmet mitt kan sleep() mens den venter på noe å gjøre. Trodde det gikk ann å gjøre noe slik, men det gjorde det altså ikke. while(!EventFired) { Sleep(1000); } Kan selvsagt starte tråden når eventen utløses men skulle gjerne kunne starte tråden tidligere. Lenke til kommentar
GeirGrusom Skrevet 6. august 2009 Del Skrevet 6. august 2009 Dette er akkurat det mutex klassen er laget for. mutex.WaitOne(); (arbeid) mutex.Release(); Hvis den andre tråden når mutex.WaitOne før den første har kalt mutex.Release, vil tråden vente til den andre kaller Release. Lenke til kommentar
Techster Skrevet 7. august 2009 Forfatter Del Skrevet 7. august 2009 Ok, høres bra ut. Det jeg ikke skjønner helt er hvordan jeg forteller hvilken ressurs som skal ventes på? Saken er at det er en liste med byte[] som skal gjøres noe med og disse blir fortløpende lagt til en liste. En annen tråd ,enn den som legger de til listen, skal gjøre en jobb på disse etterhvert som de kommer inn. Den tråden trenger da en måte å bli varslet på om at det fins nye data tilgjengelig og den tråden som har lagt til dataene i listen må returnere med en gang. En annen innfallsvinkel; delegates er jo async noe som betyr at de starter enn ny tråd eller har jeg misforstått? Events bruker delegates så kanskje jeg heller bare kan bruke en event direkte. Lenke til kommentar
GeirGrusom Skrevet 7. august 2009 Del Skrevet 7. august 2009 Jeg har litt problemer med å skrive et eksempel, siden mutex er mer nødvendig i litt større kode, der lock ikke er nok. Men idéen med mutex, er at så lenge mutexen er låst, så vil alle andre tråder vente til mutexen er frigjort, før de låser den selv. Hvis du har et array, bruker du lock btw. hehe List<int> my_list; void SomeFunc() { lock(my_list) { // blabla } } Lenke til kommentar
Techster Skrevet 17. august 2009 Forfatter Del Skrevet 17. august 2009 Nice. Takk. Jeg har litt problemer med å skrive et eksempel, siden mutex er mer nødvendig i litt større kode, der lock ikke er nok. Men idéen med mutex, er at så lenge mutexen er låst, så vil alle andre tråder vente til mutexen er frigjort, før de låser den selv. Hvis du har et array, bruker du lock btw. hehe List<int> my_list; void SomeFunc() { lock(my_list) { // blabla } } Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå