Jump to content
Unity Insider Forum

Was sind Threads und wozu verwendet man sie?


Mark

Recommended Posts

Da Threads innerhalb der Kommentarsektion zu diskutieren etwas mühselig ist, gehts einfach mal hier weiter..

 

Super simpel erklärt:

 

Threads ermöglichen dir Aktionen parallel zu anderen Aktionen auszuführen. Dies allein ist noch recht langweilig und kann noch mit Coroutinen verwechselt werden, aber interessant und wichtig wird es wenn man bedenkt das Threads auf die Anzahl der vorhandenen Prozessorkerne aufgeteilt werden. Mit nur einem Thread wird nur maximal 1 Prozessorkern ausgenutzt, hat man also 4 Kerne wird nur maximal 25% der maximal verfügbaren Systemleistung ausgenutzt.

 

Dies führt zu Problemen sollte man langweierige Operationen im Hauptthread ausführen wollen. zB:

 

- Generierung der Welt im Hintergrund (kann man mit Coroutinen lösen) wie in Minecraft

- Berechnung der KI

- Datenstreaming

 

Wenn man all dies auf dem Hauptthread ausführen sollte hat man es recht schnell mit rucklern zu tun.

 

Wenn also mal wieder jemand über die vermeindliche Langsamkeit von Unity stolpert sollte man sich überlegen ob es bestimmte Operationen gibt die man im Hintergrund ausführen möchte.

 

Unity verwendet mittlerweile auch schon mehrere Threads, soweit mir bekannt ~3, Grafik, Physik und Spiellogik.

 

Der vermeindliche Nachteil von Threads sind dass sie recht kompliziert werden können und auch zu schwerwiegenden Problemen führen können sollte man sie falsch verwenden.

 

Für abgeschottete Operationen lassen sie sich aber relativ gut und gefahrlos verwenden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für kleiner Projekte wird man Multithreading in der Regel aber nicht brauchen, solange man keine komplexeren Berechnungen (KI, eigene Physik, etc.) benötigt.

 

Dies ist eben kein einfaches Thema und Anfänger sollten davon die Finger weglassen! Vorher sollte man die Sprache C# sowie Konzepte der OOP weitestgehend beherrschen.

Wer eine Einführung in die Welt des Multithreadings will sollte sich mal diesen Artikel durchlesen: Link. Er ist zwar auf einer XNA Website, lässt sich aber wohl alles genauso in Unity anwenden (ebenfalls C#).

 

Was mich mal interessieren würde ist, ob jemand weiß, welche .Net Mono Version Unity nutzt? Unterstützt es schon die neuen Features von .Net 4.0? Denn dort wurden einige interessante (und einfache) Dinge zu Multithreading von Microsoft eingeführt, z.B. Parallel.For und solche Sachen :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für kleiner Projekte wird man Multithreading in der Regel aber nicht brauchen, solange man keine komplexeren Berechnungen (KI, eigene Physik, etc.) benötigt.

Dem widerspreche ich nicht :)

Dennoch sollte man sich der Möglichkeiten bewusst sein.

 

Was mich mal interessieren würde ist, ob jemand weiß, welche .Net Mono Version Unity nutzt? Unterstützt es schon die neuen Features von .Net 4.0? Denn dort wurden einige interessante (und einfache) Dinge zu Multithreading von Microsoft eingeführt, z.B. Parallel.For und solche Sachen

.Net 3.5 wird soweit mir bekannt damit abgedeckt. Und da auch nicht alles (aber das meiste).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...