Diskussion:User-Thread

Letzter Kommentar: vor 16 Jahren von Regani in Abschnitt Fiber vs Koroutine

verschoben von Diskussion:Thread (Informatik): Auch habe Ich mir nochmal den zugehörigen Artikel User Thread angesehen, und dort festgestellt, dass dieser in der Abgrenzung nicht ganz korrekt ist. Unter Windows besteht keine Affinität zwischen User Thread und Kernel Thread (Siehe API Doku zu SwitchToFiber), die Unterschiede zwischen Solaris und NT sind also eher in der unterschiedlichen Benamung zu suchen. Quark 01:28, 11. Jan. 2007 (CET)Beantworten

Was meinst Du mit Affinität zwischen den beiden Konzepten? -- Kalkofe3 09:43, 15. Jan. 2007 (CET)Beantworten
Stimmt auffallend, hab ich geändert. So steht es ja eigentlich auch in der von mir verlinkten Quelle (A Thread Performance Comparison...): "Windows NT does provide the means for many-to-many scheduling.". Das meinte Quark wohl mit der fehlenden Affinität von User- und Kernel-Thread unter Windows. Unter Windows 9x mag es die gegeben haben, deshalb hab ich es wohl auch geschrieben. Wenn übrigens jemand weiß, ab wann Fibers in Windows NT verfügbar waren dann immer her damit. In der Literatur findet man praktisch nix über die kleinen Biester, werden wohl nicht so oft benutzt. --Regani 11:47, 15. Jan. 2007 (CET)Beantworten
Mit Affinität meinte Ich die durch Regani geänderten Stellen. Unter Windows NT kann man n Fibers in m Threads beliebig abarbeiten, Hauptsache jeder Thread ist mir ConvertThreadToFiber dafür aktiviert worden und keine Fiber wird in zwei Threads verarbeitet. Das CreateFiber API ist nach MSDN Doku (http://msdn2.microsoft.com/en-us/library/ms682402.aspx) seit Windows NT Server 3.51 SP3 verfügbar.


Fiber vs Koroutine

Bearbeiten

Was ist der Unterschied zwischen fiber und coroutine?(Der vorstehende nicht signierte Beitrag – siehe dazu Hilfe:Signatur – stammt von Bigbenno (DiskussionBeiträge) Bigbenno)

Den größten Unterschied würde ich in der Art des Schedulings sehen. Eine Koroutine muss immer explizit die Kontrolle abgeben, weil das Konzept zwingend ein nicht-präemptives Scheduling vorsieht. Bei Java Green Threads ist das nicht nötig, da nimmt dir die virtuelle Maschine die Kontrolle weg wenn sie es für richtig hält. Wenn eine Koroutine gestartet werden soll muss sie explizit aufgerufen werden, bei User Threads kümmert sich um solche Sachen ein Scheduler den man nicht selber schreiben muss.
Generell steht bei Koroutinen eher ihre Abhängigkeit vom Aufrufer im Vordergrund, bei User-Threads eher die Unabhängigkeit der Ausführungststänge. Wobei ich behaupten möchte, dass man mit Coroutinen auch nichtpräemptive User-Threads nachbauen kann, indem das Hauptprogramm eine Liste von Funktionspointern auf Coroutinen (=die Threads) verwaltet und globale Funktionen zum Starten und Stoppen von Threads (=Eintragen und Austragen aus der Liste) anbietet. Braucht noch jemand ein Thema für eine Seminararbeit *g* --Regani 12:37, 3. Nov. 2008 (CET) P.S.: Beiträge mit --~~~~ unterschreiben.Beantworten