17

我正在研究多线程,GCD 似乎是一个使用手动编写解决方案更好的选择pthread.hand pthreads-win32。然而,尽管它看起来libdispatch要么正在开发,要么很快将要开发,大多数新的 POSIX 兼容系统......我不得不问,Windows 呢?libdispatch移植到 Windows的机会有多大?阻止这种情况发生的障碍是什么?

如果归根结底,需要做什么来进行搬运?

编辑:一些我已经知道的事情,开始讨论:

  • 我们需要一个可以在 Windows 上编译的块兼容编译器,不是吗?PLBlocks 会处理这个问题吗?
  • 我们可以使用 LLVM块运行时吗?
  • 为了可移植性,我们不能用 APR 调用替换pthread.h用户空间中的所有依赖项吗?libdispatch或者,或者,使用pthreads-win32我想...</li>

编辑1:我听说这是完全不可能的,永远,因为libdispatch依赖(以某种方式)kqueue在Windows上无法使用......有人知道这是否属实吗?

4

5 回答 5

8

https://github.com/DrPizza/libdispatch

于 2011-06-24T08:22:34.137 回答
7

看看:http : //opensource.mlba-team.de/xdispatch/ 这个项目(和其他第三方库)将 libdispatch 带入除 macosx 以外的平台(windows,linux)

于 2013-07-30T16:45:20.910 回答
5

根据我对它的基本理解,libdispatch 的 Windows 等价物是非托管代码的并发运行时和统称为托管代码并行扩展的技术集合。在我看来,GCD 很好地映射到这两者,因为它们都以类似的方式抽象工作单元(或“任务”)。

于 2010-05-02T11:14:56.807 回答
1

通过一些研究,似乎已经对一个端口产生了相当大的兴趣,但是该端口将是一项相当艰巨的任务,并且最终可能基本上只是 API 的另一种实现,实际上并没有与原始端口共享重要代码库调度。我确实看到了一些将 libdispatch 移植到基于 Apache Portable Runtime 而不是 POSIX 的建议,这使得它更容易跨平台到 Windows,但即使这也不是一个容易的改变。

很可能,这绝不是一件小事。

于 2010-05-02T03:00:54.807 回答
1

我认为与其 libdispatch-on-pthreads 和 pthreads-on-Win32,或者 libdispatch-on-APR 和 APR-on-Win32,不如直接在 Win32线程池 API上实现 libdispatch 。好消息是这两个 API 非常相似,您可以自己进行移植。坏消息是,可能会有很多极端情况,其中存在小的语义不匹配,使得精确的行为难以实现。

于 2010-05-02T03:40:54.670 回答