Domanda

prendere in considerazione un programma con conteggio ottimale filo conduttore sul server dedicato, per cui se un thread è bloccato non esistono nemmeno gli altri (quasi) in attesa di tempo di CPU. fa spin lock fornire prestazioni migliori rispetto mutex in tutti i casi possibili in tali circostanze?

[EDIT] alcune spiegazioni: dal momento che non c'è conflitto per il tempo di CPU tra i thread, thread può utilizzare il blocco rotazione w / o alcun impatto sulle altre prestazioni thread. e spin lock non passa alla modalità che può essere abbastanza pesante in attesa (almeno su finestre, idk come si svolge su linux)

È stato utile?

Soluzione

Il tuo premessa non è molto realistico. Forse tuo processo è il numero ottimale di thread, il resto per il sistema operativo ha molte centinaia di altri discussioni. Alcuni dei quali potrebbero essere pronti a correre e sarà lieto di prendere un core della CPU quando il vostro rendimenti filo. Inoltre, se il filo è in procinto di essere bloccato, è probabile che accada a causa di un blocco gestito da uno degli altri thread nel processo. Che potrebbe rilasciarlo durante il tempo di spin-wait. Il numero di fili non è pertinente a tale. E 'quindi ancora senso di spin-wait.

Altri suggerimenti

Credo che spinlock funziona meglio in questo caso, di mutexe non sono realmente necessari a meno che non si sta cercando di ottimizzare il codice e dipende da tempi diversi per I / O, ecc ... È anche fatto un buon punto di attesa modalità.

Spinlock sarebbe presumibilmente più ottimale, poiché non v'è alcuna transizione di kernel. Ma lo scenario è così artificiosa che io suggerirei mai cercare di applicarlo al codice di vita reale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top