Mark Geschrieben 9. Mai 2012 Melden Share Geschrieben 9. Mai 2012 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kevin Geschrieben 9. Mai 2012 Melden Share Geschrieben 9. Mai 2012 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 9. Mai 2012 Autor Melden Share Geschrieben 9. Mai 2012 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). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.