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