Ich frage das aus Neugier.Mac OS entspricht der Windows Fibers API?
Windows bietet eine so genannte Fibers API, eine API für einfache Benutzerprozesse/Threads.
Ich war interessiert zu wissen, ob Mac OS auch solche Funktionen bietet. Soweit ich herausfinden konnte, wäre die nächste Unix-Entsprechung die setcontext
Familie von Funktionen. Wenn Sie jedoch versuchen, eine solche API in einem Mac-Programm aufzurufen, werden Warnungen angezeigt, dass die Funktionen seit OS X 10.6 veraltet sind. Wenn ich versuche, das oben im Wikipedia-Link bereitgestellte Beispiel zu kompilieren und auszuführen, erhalte ich einen Seg-Fehler auf meiner Maschine unter der ersten swapcontext
.
Also anscheinend ist die setcontext
API ein Nein für Mac. Nicht mehr mindestens. Gibt es eine andere Möglichkeit, leichte benutzerfreundliche Threads unter Mac OS zu erreichen? Bietet das System eine solche Funktionalität?
Haben Sie sich Grand Central Dispatch angesehen? –
@ScottHunter, ich kenne einige der GCD-Framework. Aber erlaubt es beispielsweise, manuell zwischen Arbeitsfäden zu wechseln, wie es bei den Fasern der Fall ist? Ich glaube nicht, dass GCD als gleichbedeutend mit User-Side-Threads angesehen werden könnte ... – glampert
Ich würde nicht unbedingt auf dem Mac OS setcontext() ganz so schnell aufgeben ... veraltete Funktionen funktionieren in der Regel immer noch; Es wird nicht garantiert, dass sie in zukünftigen OS-Versionen unterstützt werden. Es kann also nur darum gehen, einige Details zu optimieren, um setcontext() unter MacOS zu verwenden. –