Als ich den GHC-Wiki-Kommentar zum Scheduler durchgelesen habe, war ich verwirrt Dieser Abschnitt:
Ein Grund für die Kennzeichnung einer Fähigkeit so frei, wenn es übergeben wird schnelle Callouts unterstützen Bei der Herstellung eines sicherer Auslandsruf müssen wir freigeben die Fähigkeit, und deshalb übergeben Sie es zu einem anderen Arbeitsthread. Wenn die Auslandsanruf ist kurz, wir wollen nicht die Kosten für einen Kontextwechsel übernehmen bei der Rückkehr, aber seit wir die markiert haben Fähigkeit als frei gibt es ein gutes Chance wird die wiederkehrende Aufgabe möglich sein um es sofort wieder zu erwerben und fortsetzen. Der Arbeiter, den wir aufgewacht sind werde feststellen, dass die Fähigkeit ist gehört, und gehen Sie wieder schlafen (Dies kann zu einem doppelten Kontext führen Schalten Sie, wenn keine freien CPUs eingeschaltet sind was den Arbeiter jedoch laufen lässt).
Meine Frage:
Für den fettgedruckten Satz, was tatsächlich zum "doppelten Kontextwechsel" führt, mit oder ohne eine Fähigkeit als frei zu markieren. Außerdem, was sind die zwei "Schalter", wenn sie passieren - von who1 zu who2, dann who2 zu who3?
Tags und Links haskell ghc runtime scheduling