15

मैं मल्टीथ्रेडिंग में देख रहा हूं, और जीसीडी pthread.h और pthreads-win32 का उपयोग करके मैन्युअल रूप से समाधान लिखने से बेहतर विकल्प की तरह दिखता है। हालांकि, ऐसा लगता है कि libdispatch या तो काम कर रहा है, या जल्द ही काम करने जा रहा है, सबसे नए पॉज़िक्स-संगत सिस्टम ... मुझे पूछना है, विंडोज के बारे में क्या? libdispatch विंडोज़ पर पोर्ट होने की संभावना क्या है? ऐसा होने से रोकने वाली बाधाएं क्या हैं?ग्रैंड सेंट्रल डिस्पैच (`libdispatch`) कभी विंडोज़ पर उपलब्ध कराया जा सकता है?

यदि यह नीचे आया, तो I को उस पोर्टफॉर्म को पूर्ववत करने के लिए क्या करना होगा?

संपादित करें: कुछ बातें मैं पहले से ही पता है, चर्चा पाने के लिए शुरू कर दिया:

  • हम एक ब्लॉक-संगत संकलक कि विंडोज पर संकलित कर देगा, कोई ज़रूरत है? PLBlocks हैडल करेगा?
  • क्या हम एलएलवीएम blocks runtime का उपयोग कर सकते हैं?
  • क्या हम पोर्टेबिलिटी के लिए एपीआर कॉल के साथ libdispatch में सभी pthread.h निर्भरताओं को प्रतिस्थापित नहीं कर सकते हैं? या वैकल्पिक रूप pthreads-win32 मुझे लगता है ... का उपयोग

संपादित करें 1: मैं सुन रहा हूँ कि यह पूरी तरह से और पूरी तरह से असंभव है, कभी, क्योंकि libdispatchkqueue पर निर्भर करता है (किसी भी तरह) है, जो पर उपलब्ध कराया नहीं किया जा सकता विंडोज ... क्या किसी को पता है कि यह सच है?

+3

दूसरे में libdispatch लाता है आप जोर देते लगते हैं कि एक Windows बंदरगाह चाहिए एक स्रोत स्तर बंदरगाह हो। ऐसा नहीं है - एक ही एपीआई को बनाए रखते हुए कार्यान्वयन _completely_ भिन्न हो सकता है।उदाहरण के लिए, मेरे उत्तर में वर्णित विंडोज़ प्रौद्योगिकियों में से एक के बारे में एक पतली रैपर को पर्थ्रेड, पीएलब्लॉक, एलएलवीएम, क्यूक्यू या ऐसे किसी अन्य घटक की आवश्यकता नहीं होगी जो मुझे अजीब हंगेरियन-नोटेड स्ट्रक्चर पॉइंटर्स के नाम की तरह लगती है। –

+0

ठीक है, मैं सिर्फ एपीआई नहीं चाहता ... मैं कर्नेल-स्तरीय अनुकूलन की कमी के कारण थोड़ा कम प्रदर्शन करने वाला जीसीडी के फायदे चाहता हूं। यदि ये पूर्व-विद्यमान विंडोज तकनीकें झुकाव पर हैं, तो मैंने उनके बारे में पूर्व-जीसीडी के बारे में कोई चर्चा क्यों नहीं की है? – ELLIOTTCABLE

+0

"बज़"? Srsly? क्या आप यही खोज रहे हैं? किसी भी मामले में, वे बल्कि नए हैं (या अधिक सटीक, वे हाल ही में सोने ही चले गए हैं), और मैं आपके बारे में नहीं जानता, लेकिन मैं उनके बारे में बहुत सारी चर्चा सुन रहा हूं। यदि Google खोज परिणाम गणना "buzz" का कोई संकेत है, तो http://bit.ly/dk4ry9 की तुलना http://bit.ly/9138DV या ब्लॉगपल्स 6-महीने की तुलना में करें: http://bit.ly/9L3VtM –

उत्तर

5

पर एक नज़र डालें: http://opensource.mlba-team.de/xdispatch/ इस परियोजना (और अन्य तीसरे पक्ष के libs) प्लेटफार्मों (विंडोज, लिनक्स) की तुलना में macosx

+0

वाह, महान खोज! ([अपने विभिन्न पृष्ठों से थोड़ी अधिक जानकारी लाएं] (http://meta.stackexchange.com/a/8259/140656) यहां आपके उत्तर में आपको एक और अपवर्त, साथ ही स्वीकृति भी मिल जाएगी। शायद इसका सारांश इसका उपयोग करने के लिए, उनके पृष्ठ से कॉपी किया गया; और प्लेटफॉर्म की एक सूची जिसमें दृष्टिकोण को काम करने के लिए जाना जाता है? =) – ELLIOTTCABLE

1

कुछ शोध से, ऐसा लगता है कि बंदरगाह में पहले से ही काफी रुचि है, लेकिन यह बंदरगाह काफी कठोर उपक्रम होगा और मूल रूप से एपीआई का एक और कार्यान्वयन हो रहा है और वास्तव में महत्वपूर्ण साझा नहीं कर रहा है मूल libdispatch के साथ कोड। मैंने POSIX के बजाय अपाचे पोर्टेबल रनटाइम पर आधारित होने के लिए libdispatch को पोर्ट करने के कुछ प्रस्ताव देखे, जिससे इसे विंडोज़ में क्रॉस-प्लेटफॉर्म बनाना आसान हो गया, लेकिन यह भी एक आसान परिवर्तन नहीं होगा।

संभावना है कि यह किसी भी छोटे उपक्रम से नहीं होगा।

+0

यदि ऐसी लाइब्रेरी के लिए आप वास्तव में एक और पोर्टेबिलिटी परत जोड़ने के बारे में सोचते हैं तो आप एक बहुत ही खराब प्रोग्रामर हैं, libdispatch के लिए कोई दृष्टिकोण बेयरबोन होगा। – Lothar

1

मुझे लगता है कि बजाय libdispatch-ऑन-pthreads और pthreads-ऑन-Win32, या libdispatch-ऑन-अप्रैल और अप्रैल-ऑन-Win32, यह बेहतर हो सकता है Win32 Thread Pool API पर सीधे libdispatch को लागू करने के बारे में सोचो। अच्छी खबर यह है कि दो एपीआई इतने समान हैं कि आप शायद पोर्ट को स्वयं कर सकते हैं। बुरी खबर यह है कि शायद कई कोने के मामले होंगे जहां छोटे अर्थपूर्ण विसंगतियां होंगी जो सटीक व्यवहार को हासिल करने के लिए कठिन बनाती हैं।

5

libdispatch के Windows बराबर है, इसके बारे में मेरी बुनियादी समझ से, अप्रबंधित कोड के लिए Concurrency Runtime और a collection of technologies सामूहिक रूप से प्रबंधित कोड के लिए Parallel Extensions रूप में जाना जाता है। ऐसा लगता है कि जीसीडी इन दोनों के लिए बहुत अच्छी तरह से नक्शा रखता है, क्योंकि वे दोनों समान कार्य इकाइयों (या "कार्य") को इसी तरह से करते हैं।

+1

हाँ ये समकक्ष प्रौद्योगिकियां हैं। http://blogs.msdn.com/nativeconcurrency Concurrency Runtime के लिए टीम ब्लॉग है और http://blogs.msdn.com/pfxteam .NET टीम ब्लॉग है। – Rick

संबंधित मुद्दे

 संबंधित मुद्दे