Ich versuche meinen Kopf um Fäden zu wickeln

9

Ich versuche, meinen Kopf darüber zu wickeln, wie Threading funktioniert, und ich glaube, ich könnte es zu kompliziert gemacht haben.

Ursprüngliches Verständnis:

Früher dachte ich, dass Threads auf eine einzelne Klasse und ihre Unterklassen beschränkt sind, keine Klasse kann über Threads hinweg geteilt werden, und die Kommunikation zwischen Threads machte es mir wirklich schwer zu verstehen.

Neues Verständnis:

Aber je mehr ich darüber lese, scheint es stattdessen so, als würden Threads an einem zufälligen Punkt im selben Code laufen. Sie können es auf bestimmte Bereiche beschränken, aber in der Theorie könnte derselbe Code mehrmals in jedem der Threads ausgeführt werden.

Um es anders auszudrücken: Wenn Sie den Code als ein Straßensystem mit Abbiegungen und Verbindungen sehen, sind dies die Abläufe, die ein Programm ausführen kann. Der Haupt-Thread läuft gerade durch diesen. Wenn ein neuer Thread erzeugt wird, wird nur gesagt, wo er beginnen soll, und der Code geht von dort, kann dieselben Klassen und Befehle verwenden. Wenn Sie also Ihren Code "schlecht" strukturieren, besteht die Gefahr von zwei Code-Stücken. Absturz ", aber daneben gibt es keine Einschränkungen beim Lesen und Schreiben von Code, es ist alles Teil des gleichen Programms, nur mehrere" Autos "auf den" Straßen ".

Sie können einen Thread darauf beschränken, in einem bestimmten Bereich zu bleiben (Schleife / begrenzter Teil des Codes) und nur an bestimmten Orten interagieren, oder Sie könnten ihn ignorieren und hoffen nur, die "Abstürze" zu vermeiden.

Mit dem "New Verständnis" Arbeiten mit Threads ist es für mich so viel einfacher, meinen Kopf herumzulegen, also wird es richtig verstanden?

    
Taoh 25.03.2013, 09:17
quelle

1 Antwort

1

Sie haben es ziemlich gut getroffen. Im Allgemeinen gibt es Threads, die spezialisierte Arbeit leisten und sich nicht überschneiden. Wenn der Haupt-Thread einen Unter-Thread abspeichern muss, um arbeiten zu machen, macht der Haupt-Thread fast immer nicht auch diese Arbeit .

Die Bereiche, in denen sie sich überlappen, müssen "fadensicher" sein, damit sie sich nicht gegenseitig auf die Zehen treten; Zum Beispiel mehrere Worker-Threads, die eine Sammlung für den Haupt-Thread füllen. Wenn Sie nach Klassen auf MSDN suchen, werden Sie den Klappentext am unteren Rand bemerken, der angibt, ob die Thread-Sicherheit integriert ist oder Sie müssen es selbst tun, indem Sie .nets Sperren, Mutexe oder Semaphore verwenden.

>     
Nick 25.03.2013, 12:44
quelle

Tags und Links