Är semafortrådar säkra?

Är semafortrådar säkra?
Är semafortrådar säkra?
Anonim

Semaforer är trådsäkra enligt beskrivningen i javadoc: Minneskonsistenseffekter: Åtgärder i en tråd innan man anropar en "release"-metod såsom release happen-before actions after a framgångsrik "acquire"-metod som förvärv i en annan tråd. De flesta operationer på objekten i java.

Förhindrar semaforer ras?

Nej, låsningsoperationerna sker atomärt. Hela de låsta kommer inte att utföras atomärt. Och kom ihåg att trådar delar ett gemensamt adressutrymme och är alla bundna till en process.

Är det säkert att använda tråden?

A MessageService-objekt är i praktiken oföränderligt eftersom dess tillstånd inte kan ändras efter dess konstruktion. Därför är den trådsäker. Dessutom, om MessageService faktiskt var föränderlig, men flera trådar bara har skrivskyddad åtkomst till den, är den också trådsäker.

Är tråden säker och synkroniserad?

Trådsäker betyder: metoden blir säker att nås av flera trådar utan problem samtidigt. synkroniserat sökord är ett av sätten att uppnå "trådsäker". Men kom ihåg: Medan flera trådar försöker komma åt en synkroniserad metod följer de ordningen så att de blir säkra att komma åt.

Är semaforer rättvisa?

Allmänt sett bör semaforer som används för att kontrollera resursåtkomst initialiseras som rättvisa, för att säkerställa att ingen tråd svälts ut från att komma åt en resurs. När man användersemaforer för andra typer av synkroniseringskontroll, genomströmningsfördelarna med icke-rättvis beställning uppväger ofta skälighetsöverväganden.