Spinlock
Vorlage:Hinweisbaustein Ein Spinlock (Spin-Lock) ist ein Mechanismus zur Prozesssynchronisation. Es ist eine Sperre (Lock) zum Schutz einer gemeinsam genutzten Ressource durch konkurrierende Prozesse bzw. Threads (siehe Kritischer Abschnitt) nach dem Prinzip des wechselseitigen Ausschlusses (Mutex).
Implementierung
Die Sperre wird umgesetzt mittels aktiven Wartens:
// Eintrittsprotokoll
solange (Sperrvariable besitzt Wert 'gesperrt') { // \
tue nichts; // | Achtung! Hier:
} // | Atomares Vergleichen und Setzen
setze Sperrvariable auf 'gesperrt' // /
// Kritischer Abschnitt
modifiziere Ressource
// Austrittsprotokoll
setze Sperrvariable auf 'frei'
Zu Anfang besitzt die Sperrvariable den Wert frei. Alle Prozesse durchlaufen für den Eintritt in einen kritischen Abschnitt das gleiche Protokoll: Wenn die Sperrvariable frei ist, setze sie auf gesperrt, ansonsten prüfe dies erneut (aktives Warten). Das Prüfen und Setzen erfolgt atomar und wird je nach Prozessorarchitektur unterschiedlich implementiert (siehe Fetch-and-add, Compare-and-swap oder Test-and-set).
Der Prozess, der die Sperrvariable auf gesperrt setzt, wird als „Besitzer“ der Sperrvariablen bezeichnet.
Vorteile
Das Verfahren vermeidet Kontextwechsel, die sehr zeitaufwändig sind. Wenn das Warten auf die Freigabe einer Sperre im Mittel kürzer als ein Kontextwechsel ist, dann sind Spinlocks trotz ihrer zusätzlichen Laufzeit schneller als alternative Mutexe. Dies erhöht die effektive Parallelität gegenüber threadwechselnden Synchronisationsmechanismen teilweise erheblich und ist daher bei stark nebenläufigen Algorithmen eine häufig anzutreffende Vorgehensweise (z. B. im Linux-Kernel<ref name="linux_kernel_spinlocks">{{#if:Vorlage:Cite book/URL|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:{{#if:
|
| {{#if:
| {{#if:
| [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}
}}Vorlage:Cite book/Name|{{#if:
|
| {{#if:
| {{#if:
| [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}
}}Vorlage:Cite book/Name: }}{{#if:Vorlage:Cite book/URL|{{#if:{{#if: Lesson 1: Spin locks | {{#invoke: WLink|getEscapedTitle|1=Lesson 1: Spin locks}} | ? }}|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1=Vorlage:Cite book/URL}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#if: Lesson 1: Spin locks | {{#invoke: WLink|getEscapedTitle|1=Lesson 1: Spin locks}} | ? }}}}]{{#if:| ()}}{{#if:{{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}| {{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}}}}}}}|{{#if:https://www.kernel.org/doc/Documentation/locking/spinlocks.txt%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7CVorlage:Cite book/URL}}|{{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1={{#if: Lesson 1: Spin locks | {{#invoke: WLink|getEscapedTitle|1=Lesson 1: Spin locks}} | ? }}}}}}|[{{#invoke:URLutil|getNormalized|1=https://www.kernel.org/doc/Documentation/locking/spinlocks.txt}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1={{#if: Lesson 1: Spin locks | {{#invoke: WLink|getEscapedTitle|1=Lesson 1: Spin locks}} | ? }}}}}}]}}{{#if:| ({{#if:{{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}Vorlage:Cite book/URLThe Linux Kernel ArchivesPage maintained by Rob Landley, rob at landley dot net {{#if: | via {{{via}}} }}Vorlage:Cite book/DateVorlage:Cite book/URL{{#if: {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2013-11-04
| {{#if: {{#invoke:DateTime|format|2013-11-04 |ISO|noerror=1}} || 1 }}
| 1
}}}}||1}}}}
| )
| {{#if:{{#ifeq:|de||{{#if:|1}}}}{{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}| ;
| )}}}}}}{{#if:{{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}| {{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}}}}}}}}}{{#if:https://www.kernel.org/doc/Documentation/locking/spinlocks.txt%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://www.kernel.org/doc/Documentation/locking/spinlocks.txt}}%7C%7C}}}}{{#if:{{#if: Lesson 1: Spin locks | {{#invoke: WLink|getEscapedTitle|1=Lesson 1: Spin locks}} | ? }}|{{#if:{{#invoke:WLink|isValidLinktext|1={{#if: Lesson 1: Spin locks | {{#invoke: WLink|getEscapedTitle|1=Lesson 1: Spin locks}} | ? }}|lines=0}}||}}}}{{#if: The Linux Kernel Archives| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=The Linux Kernel Archives}}}}{{#if: Page maintained by Rob Landley, rob at landley dot net {{#if: | via {{{via}}} }}| Page maintained by Rob Landley, rob at landley dot net {{#if: | via {{{via}}} }}{{#if: Vorlage:Cite book/DateVorlage:Cite book/URL|,|{{#if: {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2013-11-04
| {{#if: {{#invoke:DateTime|format|2013-11-04 |ISO|noerror=1}} || 1 }}
| 1
}}}}||,}}}}}}}}{{#if: Vorlage:Cite book/Date| {{#if:{{#invoke:DateTime|format|Vorlage:Cite book/Date|noerror=1}}
|{{#invoke:DateTime|format|Vorlage:Cite book/Date|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=Vorlage:Cite book/Date|class=Zitationswartung}} }}{{#if: Vorlage:Cite book/URL|,|{{#if: {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2013-11-04
| {{#if: {{#invoke:DateTime|format|2013-11-04 |ISO|noerror=1}} || 1 }}
| 1
}}}}||,}}}}}}}}{{#if: | S. {{#if: Vorlage:Cite book/URL|,|{{#if: {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2013-11-04
| {{#if: {{#invoke:DateTime|format|2013-11-04 |ISO|noerror=1}} || 1 }}
| 1
}}}}||,}}}}}}}}{{#if: Vorlage:Cite book/URL{{#invoke:TemplUtl|faculty|Vorlage:Cite book/URL}}| {{#if:Vorlage:Cite book/DatePage maintained by Rob Landley, rob at landley dot net {{#if: | via {{{via}}} }}|{{#if:Vorlage:Cite book/URL|archiviert|ehemals}}|{{#if:Vorlage:Cite book/URL|Archiviert|Ehemals}}}} {{#if:Vorlage:Cite book/URL|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|Vorlage:Cite book/URL}}| (nicht mehr online verfügbar)}}{{#if: Vorlage:Cite book/URL| am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|Vorlage:Cite book/URL{{#if:265328||(?)}}}}}}{{#if: {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}}|;}}}}{{#if: {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}}| {{#if:Vorlage:Cite book/DatePage maintained by Rob Landley, rob at landley dot net {{#if: | via {{{via}}} }}Vorlage:Cite book/URL{{#invoke:TemplUtl|faculty|Vorlage:Cite book/URL}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf={{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}}|class=Zitationswartung}} }} {{#invoke:DateTime|format|{{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}}|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:|de||{{#if:|1}}}}{{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}|{{#if:{{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}Vorlage:Cite book/URLThe Linux Kernel ArchivesPage maintained by Rob Landley, rob at landley dot net {{#if: | via {{{via}}} }}Vorlage:Cite book/DateVorlage:Cite book/URL{{#if: {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2013-11-04
| {{#if: {{#invoke:DateTime|format|2013-11-04 |ISO|noerror=1}} || 1 }}
| 1
}}}}||1}}}}
| (
| {{#if: | | (}}
}}{{#ifeq:{{#if:||de}}|de||
{{#invoke:Multilingual|format||slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: {{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}|{{#ifeq:{{#if:||de}}|de||, }}{{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}}})}}{{#if: Vorlage:Cite book/DateVorlage:Cite book/URL{{#if: {{#if: 2013-11-04
| {{#iferror: {{#invoke:DateTime|format|2013-11-04|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2013-11-04
| {{#if: {{#invoke:DateTime|format|2013-11-04 |ISO|noerror=1}} || 1 }}
| 1
}}}}||1}} }}{{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}|{{#if: |: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if:
| {{#if:
| {{#if:
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|Vorlage:Cite book/URL}}|{{#if:Vorlage:Cite book/URL||{{#ifeq: Vorlage:Cite book/URL | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: https://www.kernel.org/doc/Documentation/locking/spinlocks.txt | {{#if: | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://www.kernel.org/doc/Documentation/locking/spinlocks.txt | {{#if:{{#invoke:URLutil|isWebURL|https://www.kernel.org/doc/Documentation/locking/spinlocks.txt}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://www.kernel.org/doc/Documentation/locking/spinlocks.txt Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://www.kernel.org/doc/Documentation/locking/spinlocks.txt | {{#if:{{#invoke:URLutil|isWebURL|https://www.kernel.org/doc/Documentation/locking/spinlocks.txt}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[https://www.kernel.org/doc/Documentation/locking/spinlocks.txt }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: https://www.kernel.org/doc/Documentation/locking/spinlocks.txt | {{#if: | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://www.kernel.org/doc/Documentation/locking/spinlocks.txt | {{#if:{{#invoke:URLutil|isWebURL|https://www.kernel.org/doc/Documentation/locking/spinlocks.txt}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://www.kernel.org/doc/Documentation/locking/spinlocks.txt Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://www.kernel.org/doc/Documentation/locking/spinlocks.txt | {{#if:{{#invoke:URLutil|isWebURL|https://www.kernel.org/doc/Documentation/locking/spinlocks.txt}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[https://www.kernel.org/doc/Documentation/locking/spinlocks.txt }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp=|text={{#if:Vorlage:Cite book/URL|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}{{#invoke:TemplatePar|check
|all = url= title= |opt = script-title= trans-title= archive-url= archiveurl= archive-date= archivedate= authors= vauthors= author= author1= authorlink= authorlink1= author-link= author-link1= author2= author-link2= author3= author-link3= author4= author-link4= author5= author-link5= author6= author7= author8= author9= last= first= last1= first1= last2= first2= last3= first3= last4= first4= last5= first5= last6= first6= last7= first7= last8= first8= last9= first9= others= language= lang= format= website= work= publisher= via= pages= page= at= date= year= id= bibcode= doi= pmid= pmc= arxiv= archivedate= archive-date= archivebot= accessdate= access-date= quote= comment= url-status= ref= url-access= orig-year= editor= editor-link= editor-last= editor-first= editor1-link= editor1-last= editor1-first= editor2= editor2-last= editor2-first= editor2-link= department= series= agency= location= place= publication-place= publication-date= type= asin= doi-broken-date= isbn= issn= jfm= jstor= lccn= mr= oclc= ol= osti= rfc= ssrn= zbl= postscript= df= mode= display-authors= display-editors= book-title= contribution-url= offline= coauthors= month= authorlink2= authorlink3= authorlink4= authorlink5= last10= first10= last11= first11= last12= first12= last13= first13= last14= first14= last15= first15= last16= first16= last17= first17= last18= first18= last19= first19= last20= first20= last21= first21= |cat = Wikipedia:Vorlagenfehler/Vorlage:Cite web |errNS = 0 |template = Vorlage:Cite web |format = |preview = 1 }}Vorlage:Cite book/URL{{#if: Vorlage:Cite book/Webarchiv | Vorlage:Cite book/Meldung }}{{#if: | Vorlage:Cite book/Meldung }}Vorlage:Cite book/Meldung2{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:The Linux Kernel Archives|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:2013-11-04|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}</ref>).
Nachteile
Das aktive Warten benötigt Laufzeit. Ein Spinlock kann die Programmausführung stark verlangsamen, wenn mehr Threads als Prozessorkerne vorhanden sind.
In Abhängigkeit vom Schedulingverfahren kann der Einsatz von Spinlocks auch zu Deadlocks führen. Dies resultiert aus dem Umstand, dass durch einen Spinlock der aktive Thread nicht suspendiert wird, sondern aktiv auf die Sperrvariable wartet (also ablaufend bleibt) und dadurch andere ablaufbereite Threads behindert. Folgendes Beispiel verdeutlicht das Problem: In einem Einprozessorsystem mit zwei Threads wird ein Spinlock von einem Thread L mit geringer Priorität erfolgreich gesperrt. Kurz darauf (und vor der Freigabe des Spinlocks durch Thread L) wird ein Thread H mit hoher Priorität durch ein Ereignis lauffähig und vom Scheduler aktiviert. Thread H versucht nun ebenfalls, den Spinlock zu sperren, und gerät dadurch in das aktive Warten. Bei einem Schedulingverfahren ohne Time Slicing entsteht dadurch ein Deadlock, da Thread L nicht wieder lauffähig wird und den Spinlock nicht mehr freigeben kann. Die Verwendung eines Synchronisationsmechanismus mit Threadwechsel hätte in diesem Beispiel den Deadlock verhindert.
Literatur
- {{#invoke:Vorlage:Literatur|f}}
- {{#invoke:Vorlage:Literatur|f}}
- {{#invoke:Vorlage:Literatur|f}}
- {{#invoke:Vorlage:Literatur|f}}
Einzelnachweise
<references />
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:"
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Parallelverarbeitung