Udfordring: Semafor
Opgave
Forestil dig, at du har en ressource, der kun kan tilgås af to tråde ad gangen. Din opgave er at oprette et program, der bruger en semaphore til at kontrollere adgangen til denne ressource.
Betingelser:
- Du har en klasse
Resourcemed en metodeuse(), der simulerer brugen af en ressource, såsom at udskrive en besked og indføre en forsinkelse; - Du har en klasse
Worker, der implementererRunnable; i dens metoderun()vil den forsøge at tilgå ressourcen ved hjælp af ensemaphore; - I klassen
SemaphoreExamplehar du en metodemain(), der initialiserer ensemaphoremed tilladelser til to tråde, sammen med flere arbejdertråde, der vil forsøge at tilgå ressourcen; - Sørg for, at højst to tråde kan bruge ressourcen på et givent tidspunkt.
Venligst ændr ikke noget! Du skal kun implementere run()-metoden i Worker-klassen og også implementere logikken i use()-metoden i Resource-klassen.
Hvordan skal programmet fungere?
Der er 5 tråde, der ønsker at udføre use()-metoden samtidigt, men med en Semaphore skal den samtidige udførelse begrænses til 2 tråde. Så snart en tråd frigiver Semaphore, kan en anden tråd begynde at udføre denne metode. For bedre klarhed i dette scenarie anbefales det at indføre en forsinkelse i use()-metoden.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain how a semaphore works in this context?
What would the output look like when running this program?
Can you show how to implement the Resource and Worker classes?
Awesome!
Completion rate improved to 3.33
Udfordring: Semafor
Stryg for at vise menuen
Opgave
Forestil dig, at du har en ressource, der kun kan tilgås af to tråde ad gangen. Din opgave er at oprette et program, der bruger en semaphore til at kontrollere adgangen til denne ressource.
Betingelser:
- Du har en klasse
Resourcemed en metodeuse(), der simulerer brugen af en ressource, såsom at udskrive en besked og indføre en forsinkelse; - Du har en klasse
Worker, der implementererRunnable; i dens metoderun()vil den forsøge at tilgå ressourcen ved hjælp af ensemaphore; - I klassen
SemaphoreExamplehar du en metodemain(), der initialiserer ensemaphoremed tilladelser til to tråde, sammen med flere arbejdertråde, der vil forsøge at tilgå ressourcen; - Sørg for, at højst to tråde kan bruge ressourcen på et givent tidspunkt.
Venligst ændr ikke noget! Du skal kun implementere run()-metoden i Worker-klassen og også implementere logikken i use()-metoden i Resource-klassen.
Hvordan skal programmet fungere?
Der er 5 tråde, der ønsker at udføre use()-metoden samtidigt, men med en Semaphore skal den samtidige udførelse begrænses til 2 tråde. Så snart en tråd frigiver Semaphore, kan en anden tråd begynde at udføre denne metode. For bedre klarhed i dette scenarie anbefales det at indføre en forsinkelse i use()-metoden.
Tak for dine kommentarer!