Multicore und Synchronisation
In welcher Situation eignet sich ein Spinlock am wenigsten?
- AWenn die Sperre lange gehalten wird und wartende Threads unnötig CPU-Zeit verbrauchen
- BWenn die Sperre nur sehr kurz, einige zehn Nanosekunden, gehalten wird
- CBei Verarbeitung im Betriebssystemkern, bei der nicht geschlafen werden kann
Antwort und Erläuterung anzeigen
Antwort: A. Wenn die Sperre lange gehalten wird und wartende Threads unnötig CPU-Zeit verbrauchen
Ein auf einen Spinlock wartender Thread verbraucht CPU-Zeit, bis die Sperre frei ist. Wird die Sperre lange gehalten, ist die gesamte CPU-Zeit verschwendet und die Ausführung anderer Threads wird behindert. Gibt es nur einen einzigen Kern, wird die Sperre erst frei, wenn der sperrhaltende Thread ausgeführt wird, sodass das Warten bis zum Ende der Zeitscheibe andauert. Für längeres Warten wird ein Mutex verwendet, der schlafend wartet, oder ein Verfahren, das nur kurz kreist und dann schläft.