15

我寻找到多线程,和GCD好像比手动编写使用pthread.hpthreads-win32的溶液更好的选择。然而,尽管它看起来像libdispatch要么工作,或很快将要工作的,大多数较新的POSIX兼容的系统...我要问,有关Windows什么?将libdispatch移植到Windows有什么机会?防止这种情况发生的障碍是什么?是否可以在Windows上使用Grand Central Dispatch(`libdispatch`)?

如果它来到它,需要做到preform该portage?

编辑:有些事情我已经知道了,让讨论开始:

  • 我们需要一个模块兼容的编译器将编译在Windows上,不是吗?将PLBlocks处理?
  • 我们可以使用LLVM blocks runtime
  • 我们不能代替所有用户空间libdispatchpthread.h依赖与APR呼叫,便携性?或者,使用pthreads-win32我想...

编辑1:我听说这是完全和完全不可能的,直到永远,因为libdispatch依赖(在某种程度上)上kqueue,不能提供上Windows ...有人知道这是真的吗?

+3

其他平台(Windows和Linux),你似乎坚持一个Windows端口必须成为源码级端口。它不是 - 实现可以完全不同,同时保持相同的API。例如,围绕我在我的回答中提到的Windows技术之一的薄包装器将不需要pthread,PLBlocks,LLVM,kqueue或任何其他这样的组件,这些组件听起来像是不易识别的匈牙利标记的结构指针的名称。 – 2010-05-02 20:24:18

+0

那么,我不想只是API ...我想要GCD本身的好处,如果由于缺乏内核级优化而性能稍差。如果这些先前存在的Windows技术能够达到最佳效果,那么为什么我没有听说过GCD之前的任何关于它们的嗡嗡声呢? – ELLIOTTCABLE 2010-05-02 22:51:30

+0

“嗡嗡声”? Srsly?那是你在找什么?无论如何,它们都是相当新的(或者更确切地说,它们最近只是淘金),我不了解你,但我听到很多关于它们的嗡嗡声。如果谷歌搜索结果计数是“嗡嗡声”的任何指示,请将http://bit.ly/dk4ry9与http://bit.ly/9138DV或BlogPulse 6个月比较进行比较:http://bit.ly/9L3VtM – 2010-05-04 07:21:12

回答

5

看看:http://opensource.mlba-team.de/xdispatch/ 该项目(以及其他第三方库)带来libdispatch成比MacOSX的

+0

哇,很棒的发现! ([在各种页面上提供更多信息](http://meta.stackexchange.com/a/8259/140656)到您的答案中将为您赢得另一个赞扬,以及接受。使用它,从他们的页面复制;以及已知该方法工作的平台列表?=) – ELLIOTTCABLE 2015-12-20 17:30:47

1

从一些研究中,似乎已经对港口有一定的兴趣,但该港口将是一个相当激烈的事业,可能最终基本上只是API的另一个实施,并不实际上共享重要代码与原始libdispatch。我也看到了一些建议,以移植到libdispatch是基于Apache的便携式运行,而不是POSIX which'd使其更容易使其跨平台到Windows,但即使这样也不会是一件容易的改变。

有可能的,这将是绝不是一个小任务。

+0

如果您真的想要添加另一个portablility层,您是一个非常糟糕的程序员,那么任何libdispatch的方法都将是准系统。 – Lothar 2015-11-15 12:32:53

1

我认为,而不是libdispatch-on-pthreads和pthreads-on-Win32,或者libdispatch-on-APR和APR-on-Win32,直接在Win32 Thread Pool API上实现libdispatch可能会更好。好消息是这两个API非常相似,你可以自己做端口。坏消息是,可能会有很多角落案例,其中存在小的语义不匹配,使得难以实现准确的行为。

5

从我对它的基本理解来看,libdispatch的Windows等价物是非托管代码的Concurrency Runtime和托管代码统称为Parallel Extensionsa collection of technologies。在我看来,GCD很好地映射到了这两者,因为它们都以相似的方式抽象工作单元(或“任务”)。

+1

是的,这些是等效的技术。 http://blogs.msdn.com/nativeconcurrency是并发运行时的团队博客,http://blogs.msdn.com/pfxteam是.NET团队博客。 – Rick 2010-05-02 17:28:57