Einem technisch nicht versierten Publikum die Rennbedingungen erklären [geschlossen]

StackOverflow https://stackoverflow.com/questions/310282

  •  10-07-2019
  •  | 
  •  

Frage

Kürzlich musste ich einige meiner Bedenken hinsichtlich der Rennbedingungen in einer Anwendung niederschreiben, die sich in der Entwicklung befindet (nicht von mir).Dies wird wahrscheinlich Interessenvertretern zur Kenntnis gebracht, die keine technischen Kenntnisse haben und mit denen ich keinen direkten Kommunikationsweg habe, daher muss meine Erklärung in schriftlicher Form erfolgen.

Ich habe bereits einen Versuch unternommen, diesen Artikel zu schreiben.Ich beschönige die technischen Einzelheiten so gut ich kann, gebe ein Beispiel dafür, wie eine Rennbedingung in der Anwendung auftreten würde, und beschreibe ihre Auswirkungen.Ich habe das Gefühl, dass ich es ziemlich gut gemacht habe, aber es ist alles andere als perfekt.

Das Problem besteht darin, dass ich, so sehr ich auch versuche, den Leser vor der Informatik zu schützen, immer noch Schwierigkeiten habe, Ausdrücke wie „Ausführungsfäden“ und „gegenseitiger Ausschluss“ zu eliminieren, ohne an Korrektheit und Substanz zu verlieren.Das Risiko besteht darin, dass diese Bedenken durch allzu großes Hin und Her als erfundener Schreckgespenst abgetan werden könnten.

Wie auch immer, meine Frage an Sie lautet: Wie würde Du Rennbedingungen einem technisch nicht versierten Publikum erklären? Würden Sie es wagen, die CPU-Planung zu erklären?Würden Sie das aufrufen? Speisephilosophen?

Sie müssen nicht innerhalb der Einschränkungen meiner Situation arbeiten (es wäre jedoch äußerst hilfreich, wenn Sie dies täten).

War es hilfreich?

Lösung

Firma X hat 1.000 $ in der Bank. X zahlt eine Miete von $ 2.000 und erhielt eine Zahlung von $ 10.000 für jedoch an Unternehmen Y. erbrachte Leistungen aufgrund einer Race-Bedingung, X in Defizit von $ 1.000 ist und jetzt Konkurs bewirbt. = (

Sie könnten erklären wollen, wie die Bank Firma X Konto auf diese Weise behandelt: Mitarbeiter der Bank A nimmt den aktuellen Wert von $ 1.000 und $ 10.000, um es hinzufügt. Mitarbeiter der Bank B nimmt den aktuellen Wert von $ 1.000 und $ 2.000 subtrahiert davon. Mitarbeiter der Bank A aktualisiert den Wert auf $ 11.000. Mitarbeiter der Bank B aktualisiert den Wert zu -. $ 1.000

Andere Tipps

Ich denke, Banktransaktionen könnten ein gutes Beispiel sein, zum einen, weil man leicht erkennen kann, dass ein falsches Ergebnis vorliegt schlecht und weil in einer solchen Umgebung leicht Rennbedingungen geschaffen werden können.

Ich habe 500 $ auf meinem Konto.Jemand überweist mir 200 $, während ich gleichzeitig 50 $ abhebe.

Wenn die Bank die Rennbedingungen nicht ordnungsgemäß übernimmt, werden sie Folgendes ausführen (vorausgesetzt, die Transaktionen werden natürlich manuell durchgeführt) Clerk A wird die Anfrage sehen, 200 US -Dollar zu meinem Restbetrag hinzuzufügen, und beachten Sie, dass mein Restbetrag derzeit 500 US -Dollar beträgt .Verkäufer B sieht die Aufforderung, 50 $ von meinem Guthaben abzuziehen, und stellt fest, dass mein Kontostand derzeit 500 $ beträgt (Mitarbeiter A hat das Geld noch nicht überwiesen).

Sachbearbeiter A erledigt den Papierkram und setzt meinen Kontostand auf 700 $ (500 + die 200, die er hinzufügen sollte).Und dann, eine Minute später (weil Verkäufer B sich gerade eine Tasse Kaffee holen musste), beendet Verkäufer B die andere Transaktion und setzt meinen Kontostand auf 450 $ (die 500, die ich hatte, als er überprüfte, abzüglich der 50, die er abziehen sollte). ).

Aufgrund einer Rennbedingung beträgt mein Guthaben jetzt 450 $, obwohl es 650 $ hätte betragen sollen.Das Ergebnis hing von der Reihenfolge ab, in der verschiedene Teile der beiden Transaktionen durchgeführt wurden.

Das ist die allgemeine Beschreibung dafür, wie schlecht die Rennbedingungen sind.Nehmen wir nun an, dass unsere Anwendung anstelle von Sachbearbeitern zwei separate Aufgaben gleichzeitig verarbeitet (das sind Ihre „Ausführungsthreads“), und genau wie oben lesen beide einen Wert und ändern den Wert Sie Lesen Sie es und schreiben Sie es dann zurück.Eine der Änderungen kann dann verloren gehen, wenn dies in der oben angegebenen Reihenfolge geschieht.Das sollte es mit den spezifischen Problemen in Ihrer App in Verbindung bringen.

würde ich für einen Speise Philosopher's-artigen Ansatz gehen, aber je nach meinem Publikum, würde ich versuchen, es auf den Kontext meines Publikums analogize. Sprechen Sie Führungskräfte? Dann analogize es so etwas wie einen Konferenzraum oder ein Firmenauto zuteilen oder ein Hotelzimmer oder was auch immer Sie buchen. Sprechen Sie mit durchschnittlichen Menschen? Dann wird der Speise Philosophen Beispiel ist in Ordnung, oder Sie können eine ähnliche Situation denen die Betreuung von Nutztieren oder sitzen auf Stühlen ausdenken oder was auch immer.

Ob Sie dem Beispiel des Speise Philosoph kapern oder eigene Make-up, auf jeden Fall eine Metapher verwenden.

Wenn Sie ein nicht-technisches Publikum schreiben, werden Sie Ihre Erklärungen vereinfachen wollen und es zu etwas beziehen sie verstehen können. Eine Erklärung genommen von dem Papier Analogies für paralleles Rechnen zu unerfahrenen Programmierern Lehre ( http: // Portal ? .acm.org / citation.cfm doId = 1189136.1189172 ) erklärt es im Hinblick auf ein Stift-Spiel:

  

Wir werden ein Spiel spielen, so genannte   Pen-Spiel. Die Regeln sind einfach: Ich bin   Gehen Sie einen Stift in der Hand zu halten, und   Ich werde dann sagen: „Eins, zwei, drei, los.“   Als ich „gehen“, sagen nehmen Sie den Stift aus meiner   Hand. Wer bekommt die Feder gewinnt.   Bereit? Eins, zwei, drei, los.

Sie dann fragen, ob das Ergebnis dieses Spiels kann im Voraus vorhergesagt werden. Wenn es nicht vorhergesagt werden kann, können wir ein korrektes Ergebnis garantieren? Dies sollte zu der Erkenntnis führt, dass es möglich ist falsche Ergebnisse für die gleichzeitigen Schreibvorgänge auf das gleiche Stück Speicher zu erhalten.

Ich wollte die speisenden Philosophen empfehlen, aber ich sehe Sie schon, dass man gefunden zu haben. So, als Alternative, wie wäre es mit gridlock als Analogie?

Stellen Sie sich vor den normalen Verkehr entlang der vier Straßen fahren neben einem einzigen Häuserblock (North ave, Süd ave, Oststraße und West-Straße). Wenn es nur ein oder zwei Autos auf der Straße ist, bewegt sich alles reibungslos. Bei der fließende Verkehr ist, werden einige Fahrzeuge müssen für andere Autos anhalten und warten vorbei zu bewegen, aber das ist ein überschaubares Problem. Ein Auto hält für ein anderes Auto zu warten, um zu gehen, und dann weiter auf fröhlicher Art und Weise.

Jetzt, Bild Rush-Hour-Verkehr an der gleichen Stelle. Nehmen wir an, ein Auto Süd auf West-Straße fahren nicht an der nordwestlichen Ecke der City-Block über die Kreuzung den ganzen Weg machen. Das Auto blockiert nun alle von dem Westbound Querverkehr auf Nord ave. Es dauert nicht lange dauern, bis ein Auto in Richtung Westen versucht es durch die nordöstliche Ecke Kreuzung zu machen und stecken bleibt, auf Oststraße alle der Northbound-Verkehr zu blockieren. Wenn diese Situation es den ganzen Weg macht um die vier Kreuzungen, können keine Autos bewegen! Jeder ist für die Autos vor ihm warte voraus zu bewegen, aber es gibt keine Möglichkeit für die festgefahrene Situation, ohne ziehen Autos aus rückwärts releived werden.

Der Vergleich zu Computing sollte unkompliziert sein. Autos sind Threads oder Prozesse, Straßen und Alleen sind Prozessoren, Puffer oder Kerne. Das Konzept der Sperrung kann mit Ampeln oder Stoppschildern beschrieben werden, und das Ganze beginnt intuitiv Sinn zu machen, auch für Nicht-Programmierer.

Schreiben Sie ein Programm:

  1. Warten Gehalt.
  2. Zum Shop.
  3. Kaufen Sie Lebensmittel.
  4. Schalten Sie die Platte.
  5. Essen auf den Teller.
  6. Halten Sie Platte für 20 Minuten.
  7. Essen.
  8. Gehen Sie ins Bett.

Versuchen Sie nun zwei Threads zu haben (Sie, Frau) ausführen es ohne syncronization.

  • Sie:. Warten Sie, Gehalt
  • Ehefrau: Zum Shop ohne Geld, crash

  • Sie:. Schalten Sie die Platte

  • Sie: Halten Sie Platte für 20 Minuten.
  • Sie:. Geh ins Bett

  • Frau:. Essen Sie bei jemand anderem Ort

  • Frau: Geh ins Bett.

Peter will aus seiner Einfahrt ziehen. Er prüft, ob nichts in der Art und Weise seines Autos ist, wird dann in. Sein Sohn Frank dann hinter dem Auto versteckt. Peter kann ihn nicht sehen und läuft ihm.

Das Wichtigste dabei ist, dass für einen Computer, „inspiziert“ und „ändern“ neigen dazu, zwei getrennte Aktionen zu sein, also ein Beispiel, wo man etwas nicht überprüfen kann, wenn Sie es ändern, gut ist.

Wie wäre es die Ebene offensichtlich?

Eine Race-Bedingung ist buchstäblich ein Rennen zwischen zwei Menschen.

Ein Unternehmen an einem Projekt bewirbt. Zwei Mitarbeiter arbeiten unabhängig auf Gebote legen sie den Kunden, sondern einer der Mitarbeiter hat veraltete Informationen. Weder Mitarbeiter wissen, dass der andere in dem Verfahren ist ein Angebot einzureichen, also je nachdem, wer schneller ist, das erste Gebot mit dem langsameren Mitarbeiter ersetzt werden. Dies führt dazu, Verwirrung als das Angebot im Laufe der Zeit verändert hat.

Es muss sein, die Kommunikation zwischen den beiden Mitarbeitern entweder zusammen zu arbeiten, oder einen von ihnen stoppen.

Eine Schwierigkeit das allgemeine Konzept zu erklären ist, dass die Rennbedingungen manifestieren sich in einer Vielzahl von Situationen. Wenn Sie Ihrem Ziel nicht-technisches Publikum gibt das Gefühl, dass dies ein allgemeines Problem Typ ist, sollten Sie versuchen, mehr als nur ein Beispiel zu bieten.

Ein Bild sagt mehr als 1000 Worte. Das ist wahr. Wenn Sie eine Zeitleiste ziehen und eine Einheit auf sie setzen und zeigen seinen Zustand ändert, wenn die Zeit fortschreitet man ein Rennen-Zustand ziemlich leicht in einem Diagramm zeigen können. Es kann ein paar Nacharbeiten nehmen das Bild richtig hinzubekommen, aber ich habe immer gefunden, dass es heraus bekommt mein Punkt über Muss Zeichnung schneller, als es zu beschreiben.

Ich denke, es ist schwer, dies auf einfache Art und Weise zu erklären, weil das Denken über die Parallelität von Natur aus hart ist. Die Grundidee einer Finanztransaktions könnte ein guter Anfang sein, da die Menschen eine gewisse Vertrautheit mit ihnen aus dem wirklichen Leben haben werden.

In jeder Art von Transaktion, müssen Sie gleichzeitige Eingaben an zwei Orten machen - Belastungen und Gutschriften. Wenn die Transaktion von einer anderen Person in der Mitte unterbrochen wird versucht, eine andere Transaktion durchzuführen, werden sie das falsche Gleichgewicht in der einen oder der anderen der Konten sehen.

Ein tolles Beispiel gibt es hier Strukturierte gleichzeitige Programmierung mit Betriebssystemanwendungen (wie ich mich erinnere)

Im armen Land Bezerkistan vereinen sich zwei Linien in einem Tunnel zu einem einzigen Gleis.Es kam zu Zusammenstößen und die herrschende Junta braucht eine Lösung.

Das Problem ist, dass es bergig ist und die Ingenieure blind sind.Es gibt kaum eine Vorwarnung, dass zwei Züge im Tunnel kollidieren könnten.

Hier ist der Plan.

  1. Stellen Sie eine große Schüssel an die Verbindungsstelle.

  2. Geben Sie jedem Ingenieur einen kleinen Messingaffen.

Als Sie den Tunnel betreten wollen, halten Sie Ihren Zug an.Sie klopfen in der Schüssel herum, um zu sehen, ob sich ein Messingaffe in der Schüssel befindet.

Wenn es einen Affen gibt, benutzt jemand anderes den Tunnel. Sie müssen also warten, bis der Zug vollständig im Tunnel ist. Dann steigt der Schaffner aus der Kombüse und schnappt sich den Affen aus der Schüssel.

Wenn es keinen Affen gibt, benutzt niemand sonst den Tunnel.Sie können also Ihren Affen aus dem Motorraum nehmen, ihn in die Schüssel legen und durch den Tunnel fahren, in dem Wissen, exklusiven Zugang zur Strecke zu haben.Natürlich halten Sie kurz an, damit der Schaffner den Messingaffen zurückholen kann.

Erraten Sie, was?

Sie Trotzdem hatte Kollisionen!

Warum?Welche Situation oder Abfolge von Aktionen führt dazu, dass dies fehlschlägt?


Das ist eine Rennbedingung.

In einem schriftlichen Dokument können Sie erklären, wie die Rennbedingungen zu einem Unfall führen.

In einer Präsentation können Sie das Publikum durch Überlegungen zu Parallelität und Sperren schulen.

würde ich ein Shared-Memory-Bankkonto Beispiel einer Datum Race-Bedingung verwenden.

erklärt, dass der Computer so etwas wie: Lastausgleich; 1 hinzufügen; Laden Balance ;. betrachten zwei Threads, die Ihr Bankkonto Gleichgewicht modifizieren (Sie und Ihre Frau sind beide einen Dollar zur gleichen Zeit Ablagern).

Wenn beide Threads nach dem interuupted erhalten: Lastausgleich; und dann wieder aufnehmen, können Sie einen Dollar verlieren.

siehe: http://wasp.cs.washington.edu/atomeclipse/handouts .pdf

Wie Sie erwähnt haben, müssen Sie oft andere Konzepte (mutual exclusion, Ausführungs-Threads) einzuführen, um genau Rennbedingungen, auch in einer Metapher zu beschreiben. So versucht, diese Begriffe zu definieren (oder zumindest die Idee, über immer) zuerst, Metapher.

Als einfaches Beispiel wollen wir verwenden, um ein 4-Wege-Kreuzung (Set in einem Land, in dem Sie auf der rechten Seite fahren). Teilen Sie die Kreuzung in 4 Quadranten: Nord-West, Nord-Ost, Süd-Ost und Süd-West. Nun hat jeden Quadranten ruft eine Ressource, und rufen Sie jedes Auto einen Ausführungs-Thread. Diese Autos respektieren nur Verkehrssysteme, und da gibt es keine Stoppschilder oder Ampeln an dieser Kreuzung, die Autos Lauf direkt auf durch ohne Verlangsamung oder unter Berücksichtigung Verkehr.

Sie können ganz einfach zeigen, dass die gleichzeitige Nutzung eines dieser Quadranten durch mehr als ein Auto ist schlecht, und die Ergebnisse bei einem Autounfall. Eine offensichtliche Lösung ist ein Verkehrssystem zu installieren. Das System stellt sicher, dass nicht mehr als ein Auto ist zugleich durch einen Quadranten vorbei. Es kann dies kompliziert machen, ohne alle Ressourcen zu binden. Zum Beispiel aus dem Süden lassen Autos biegen Sie links ab Westen fahren (zu Südosten und Nordwesten Quadranten verwendet wird), während Autos lassen aus dem Westen rechts abbiegen kommen Süden zu fahren (die Süd-West-Quadranten mit) . Das Verkehrssystem ist mutual exclusion Bereitstellung oder Verhinderung gleichzeitige Verwendung (durch mehrfache Autos) eine gemeinsamen Ressource (die Quadranten der Straße in der Kreuzung).

Das zumindest liefert die Ideen, die hinter diesen Definitionen, die Idee, die gemeinsam genutzte Ressourcen gleichzeitig Zugriff auf kann schlecht sein, und dass die gegenseitige Ausgrenzung kann dieses Problem lösen. Danach hergestellt wird, müssen Sie diese an eine passendere Metapher zur Karte zu zeigen, was eine Race-Bedingung ist und wie es ist einer dieser schlechten Dinge, die für eine gemeinsame Ressource aus Mangel an gegenseitigem Ausschluss führt.

Es dauert ein wenig länger, aber es gewährt eine gewisse Vertrautheit mit Begriffen und das große Bild vor nach unten in eine komplexere Metapher zu bohren.

Im Gespräch über Geld, um Ihre Stakeholder könnten sie in Panik-Modus sendet vor allem, wenn sie annehmen, dass sie aus diesem Grunde tatsächlich Geld verlieren, was nicht gerade ideal ist, wenn das Problem nicht speziell in einem Nettoverlust von Gewinnen führen, so ist hier ein weniger Geschichte finanziell orientierte, wie Sie eine race-Bedingung zu jemandem erklären können.

Diese Geschichte bezieht sich nicht auf den Begriff der Deadlock , aber das traditionellere Race-Bedingung Szenario und Folgen.

GESCHICHTE BEGINNT HIER:

Der Rahmen: Es gibt drei Städte durch ein Eisenbahnnetz angeschlossen. Die Züge haben keine Anzeichen auf sie angibt, welche Stadt sie kommen und welche Stadt sie zu gehen, weil sie zwischen allen drei Städten und dem Schienennetz verwendet werden wollte nicht mit dem Aufwand des Wechsels Zeichen behandeln alle Zeit. Da das Netzwerk dort klein ist kein konkreter Zeitplan, wann Züge kommen und gehen. Die Stationsaufseher bekommen gerade einen Anruf von der anderen Aufsehern Stadt Station, wenn ein Zug fährt, nimmt der Vorsteher eine Notiz von der Zeit, als es verlassen hat, und da alle Züge die gleichen Modelle fahren sie mit der gleichen Geschwindigkeit, so dass, wenn der Vorsteher erhält ein Anruf von den anderen Städten sie an den Menschen in der Station, die verkünden: „der nächste Zug nach Stadt C wird Überschrift“. So sind die Menschen, die Stadt C den Zug warten, die reisen wollen, hüpfen auf und fahren fröhlich zu Stadt C

Das Problem: Aber einen Tag, als ein Zug seine Route von A Planung bis zur C nach B, es brach auf halben Weg zwischen A und B. Zum Glück ist die Techniker sehr geschickt und würde der Lage sein, den Zug in kurzer Zeit zu reparieren. Doch am selben Tag wurde ein weiterer Zug plant auch einen anderen Weg von C nach A B Der Vorsteher an der Station B einen Anruf von A erhalten, dass ein Zug kommt, und kurz nach weiteren Anruf von C erhalten, dass ein anderer Zug wurde auch kommen. Die Station Vorarbeiter kündigte dann an die Passagiere in der Station warten: „Der erste Zug ankommt, wird an der Station C zusteuern, und kurz nach dem Zuge nach, dass an der Station A zusteuern“ Da die Passagiere versammelten sich ihr Gepäck und gingen zu ihren jeweiligen Plattformen. Der Vorsteher sah einen Zug kommen und die Schienen an der Plattform umgeleitet, wo die Menschen vorhatten zu Stadt C. Kleine den Kopf tat sie wissen, dass der Zug tatsächlich statt zu Stadt A gehen. Der andere Zug, nachdem auch an der Station angekommen seine mechanischen Probleme behoben hat, und die Vorarbeiter es gerne auf die Plattform gerichtet Passagiere enthalten zu wollen Stadt A. Unnötig gehen zu sagen, keiner der Passagiere angekommen, wo sie geplant, alles nur, weil die Vorarbeiter davon aus, dass sie, um wie üblich ankommen würden.

Das Problem mit Rennbedingungen und viele viele Informatik-Konstrukte ist, dass die Menschen keine Computer. Jedes Mal, wenn ich einen Algorithmus zu meinen Schülern erklären sie sagen, „aber es macht keinen Sinn, es so zu tun“, auf die ich antworten „Computer nicht den gesunden Menschenverstand haben, haben sie alle sind Anweisungen“. Davon abgesehen, sollten Sie eine Race-Bedingung als ein Rennen erklären, und es macht am meisten Sinn tatsächlich Menschen das Rennen versuchen zu lassen, wenn sie können. Auf diese Weise können sie sehen, wie die Dinge schief gehen. Aber ... sie sind nicht erlaubt gesunden Menschenverstand zu benutzen.

Nehmen wir also an wir ein Spiel haben, wo zwei Personen Stapel von farbigen Blöcken, um Rot füllen, Orange, Gelb. Sie haben viele rote, orange und gelbe Blöcke. Alle Stapel müssen genau drei Blöcke hoch.

Im ersten Spiel versuchen beide dies so schnell wie möglich zu tun, aber sie nur auf ihren eigenen Stapeln arbeiten.

Im zweiten Spiel, das sie versuchen, zusammen zu arbeiten, indem sie sich auch Blöcke stapeln auf jeder Stapel des anderen. Allerdings sind sie nicht erlaubt, den Block sie in der Hand haben zu ändern, und sie haben einen geplanten Block zu setzen.

Sie können eine Situation vorstellen, wie dies in Stapel auftritt 1:

player 1 grabs a red block
player 1 places red block         - player 2 grabs an orange block
player 1 grabs an orange block    - player 2 places an orange block
player 1 places an orange block

So, jetzt haben wir einen Stapel mit zwei orange-Blöcken. Es ist offensichtlich, dass mit einem menschlichen Spiel würde das nie passieren, weil die Menschen den gesunden Menschenverstand haben. Sie sehen, dass die orange Block bereits platziert ist, und kehrt ihre Entscheidung auch einen orangefarbenen Block zu platzieren

Diese können Sie ebenfalls dieses Video zeigen: https://www.youtube.com/watch? v = TcGwNdbsAbc

Lassen Sie uns ein Whiteboard verwenden, um eine triviale Buchhaltungsaufgabe zu erledigen.Wir haben 100 $ zur Hand – schreiben Sie es an die Tafel.

Alice hat Dutzende von Rechnungen, die sich auf 100 US-Dollar summieren, also wird sie sich die 100 US-Dollar notieren, ihre Liste zusammenzählen und in 5 Minuten zurückkommen und 200 US-Dollar an die Tafel schreiben.

Bob war einkaufen.Er wird diese Zahl von der Tafel nehmen und Einkäufe im Wert von 50 $ abziehen und dann 50 $ an die Tafel schreiben.

Wenn Bob zuerst zurückkommt, sehen wir 200 $, nachdem Alice ihr Ergebnis geschrieben hat.Wenn Alice zuerst zurückkommt, sehen wir 50 $, ebenfalls falsch.Was wir wollen zu sehen, kostet 150 US-Dollar, und wir müssen irgendwo einige Vorsichtsmaßnahmen treffen, um dies zu ermöglichen.

Das sollte ausreichen, um eine Diskussion über technische Lösungen mit vernünftigen Intuitionen zu ermöglichen.

Ein Mutex bedeutet beispielsweise, dass Sie die Tür zu dem Raum mit dem Whiteboard darin abschließen und die Mitarbeiter dort ihre Arbeit erledigen lassen.Eine optimistische Lösung bedeutet, dass Sie beide bitten, zu überprüfen und von vorne zu beginnen, wenn sich die Nummer während ihrer Abwesenheit geändert hat.Wenn Sie über Deadlocks sprechen möchten, können Sie darüber lachen, dass Bob Alice aus dem verschlossenen Raum anruft und sie bittet, sich zu beeilen.

Send them href="http://en.wikipedia.org/wiki/Race_condition" rel="nofollow noreferrer"> Race-Bedingung auf Wikipedia

Der erste Teil wird einen Sinn machen, und den Rest (nicht unten) werden Sie intelligent aussehen, da sie annehmen, dass Sie es verstehen.

"A Race-Bedingung oder Rasse Gefahr ist ein Fehler in einem System oder ein Verfahren, bei dem das Ausgangssignal und / oder das Ergebnis des Prozesses unerwartet ist und kritisch abhängig von der Reihenfolge oder Zeitsteuerung anderer Ereignisse. Der Begriff stammt mit der Idee, zwei Signale einander Rennen die Ausgabe zunächst zu beeinflussen. "

Ich glaube, der entscheidende Punkt zu vermitteln ist, dass seine am häufigsten ein Timing-Problem, das unvorhersehbar sein kann, weil das Timing etwas unterscheidet sich von Zeit zu Zeit in Anspruch nimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top