Lo chiedo per curiosità.equivalente Mac OS dell'API Fibre Windows?
Windows fornisce ciò che chiamano uno Fibers API, che è un'API per processi/thread utente leggeri.
Mi interessava sapere se Mac OS offre anche tali funzionalità. Per quanto ho potuto scoprire, l'equivalente Unix più simile a quello sarebbe la famiglia di funzioni setcontext
. Tuttavia, il tentativo di chiamare tale API su un programma Mac produce avvertenze che dicono che le funzioni sono state deprecate da OSX 10.6. Inoltre, quando provo a compilare ed eseguire l'esempio fornito nel link di Wikipedia sopra, ottengo un errore di seg sulla mia macchina al primo swapcontext
.
Quindi apparentemente l'API setcontext
è un no go per Mac. Almeno non più. C'è un altro modo per ottenere thread utente lato leggero su Mac OS? Il sistema fornisce tale funzionalità?
Hai guardato Grand Central Dispatch? –
@ScottHunter, conosco parte del framework GCD. Ma permette, ad esempio, di passare manualmente tra i thread di lavoro, come avviene con le fibre? Non credo che GCD possa essere considerato equivalente ai thread sul lato utente ... – glampert
Non mi arrenderei necessariamente su Mac OS setcontext() abbastanza rapidamente ... le funzioni deprecate di solito funzionano ancora; semplicemente non sono garantiti per essere supportati nelle versioni future del sistema operativo. Quindi potrebbe essere solo questione di modificare alcuni dettagli per ottenere setcontext() che funziona sotto MacOS. –