Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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
  • 2 uker senere...

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...