Я прошу об этом из любопытства.Mac OS эквивалент API Windows Fibers?
Windows предоставляет то, что они называют Fibers API, который представляет собой API для легких пользовательских процессов/потоков.
Мне было интересно узнать, поддерживает ли Mac OS такие функции. Насколько я могу судить, самым близким эквивалентом Unix к этому будет семейство функций setcontext
. Тем не менее, попытка вызвать такой API в программе Mac вызывает предупреждения о том, что функции устарели с OSX 10.6. Кроме того, когда я пытаюсь скомпилировать и запустить пример, указанный в ссылке Википедии выше, я получаю ошибку seg на моей машине в начале swapcontext
.
Таким образом, очевидно, что API setcontext
не подходит для Mac. По крайней мере, не больше. Есть ли другой способ добиться легкого потока пользователей на Mac OS? Обеспечивает ли система такую функциональность?
Вы смотрели Grand Central Dispatch? –
@ScottHunter, я знаю некоторые рамки GCD. Но позволяет ли это, например, вручную переключаться между нитями работы, например, с волокнами? Я не думаю, что GCD можно рассматривать как эквивалент пользовательских потоков ... – glampert
Я бы не отказался от Mac OS setcontext() довольно быстро ... устаревшие функции обычно работают; они просто не гарантируются в будущих выпусках ОС. Так что это может быть просто вопрос настройки некоторых деталей, чтобы получить setcontext(), работающий под MacOS. –