Mac OS相当于Windows Fibers API?

时间:2015-05-18 02:51:10

标签: c windows macos fiber

我出于好奇而问这个。

Windows提供了他们称之为Fibers API的内容,它是轻量级用户进程/线程的API。

我很想知道Mac OS是否也提供了这样的功能。据我所知,与此类似的最接近的Unix将是setcontext函数族。但是,尝试在Mac程序上调用此类API会产生警告,表示自OSX 10.6以来已弃用这些函数。此外,当我尝试编译并运行上面维基百科链接中提供的示例时,我在第一个swapcontext上的机器上出现了段错误。

显然,setcontext API对于Mac来说是不行的。至少不再是。有没有其他方法可以在Mac OS上实现轻量级用户端线程?系统是否提供此类功能?

1 个答案:

答案 0 :(得分:3)

不,在OS X(或大多数基于UNIX的系统)上没有相应的东西。 POSIX标准不推荐使用ucontext系列函数,但未提供替换功能。

OS X上最接近的是Grand Central Dispatch,它允许您创建执行'块'的调度队列。 (基本上是功能)。这些队列的处理可以暂停和恢复,类似于光纤,但是你不能在一个块的中间停止并恢复执行。

还有Boost.Context,它提供与ucontext类似的功能(甚至可能在内部使用它),尽管它是一个C ++库。