2012-11-03 13 views
11

मैं विंडोज़ के लिए gcc 4.7.2 कंपाइलर का नवीनतम उपलब्ध संस्करण डाउनलोड करना चाहता था।
जब मैं इस page जहां मैं एक डाउनलोड लिंक को देखने के लिए चाहिए था मिल गया, मैं दो श्रेणियों के साथ सामना किया:विंडोज़ के जीसीसी पोर्ट में thread_posixs और thread_win32 के बीच क्या अंतर है?

  1. धागे-POSIX
  2. धागे-Win32

क्या इन के बीच का अंतर दो?
वे केवल कार्यान्वयन थ्रेड हैं? मेरा मतलब है वे केवल वे कैसे लागू किया जाता है में अलग है और इस तरह समाप्त होने के परिणाम हैं (कक्षाएं, कैसे, आदि उन्हें इस्तेमाल करने के लिए) एक ही रहता है?
या क्या वे एक विशिष्ट कोडिंग शैली लगाते हैं?

उत्तर

18

तो, लिंक आप सुराग प्रदान की खिड़कियों के लिए स्टैंडअलोन जीसीसी 4.7.2 के बनाता है, mingw64 a.k.a। इस कंपाइलर को बनाने के लिए, स्क्रिप्ट का एक सेट उपयोग किया जाता है, जो संकलन के विकल्पों को परिभाषित करने में मदद करता है। स्क्रिप्ट बस कहा जाता है MinGW-बनाता है, और विभिन्न स्थानों में पाया जा सकता है:

स्क्रिप्ट एक विकल्प जो निर्दिष्ट करें कि कौन धागा मॉडल के लिए प्रयोग की जाने वाली है सीडी + 11 मानक के std :: धागे भाग (यह जीसीसी के उस संस्करण पर लागू experimental patch के लिए MinGW धन्यवाद के लिए अनुमति है)। एक मामले में, Win32 थ्रेड एपीआई का उपयोग किया जाता है, और दूसरे मामले में यह पॉज़िक्स एपीआई है जिसका उपयोग किया जाता है।

ध्यान दें कि विंडोज बॉक्स के बाहर सभी POSIX API का समर्थन नहीं करता है, इसलिए कुछ बाहरी अनुकरण पुस्तकालय का उपयोग करने की आवश्यकता है (winpthreads)।

जीसीसी स्रोत कॉन्फ़िगरेशन स्क्रिप्ट में एपीआई (--enable-threads =) निर्दिष्ट करने का विकल्प होता है, और बिल्ड स्क्रिप्ट में इसका उपयोग किया जाता है।

संक्षेप में, MinGW के इस संस्करण के लिए, धागे-POSIX रिहाई POSIX एपीआई का उपयोग करेगा और std :: धागा के उपयोग की अनुमति है, और धागे-Win32 Win32 एपीआई का उपयोग करेगा और को निष्क्रिय std :: मानक का धागा हिस्सा।

+2

पूर्णता के लिए (क्योंकि यह केवल 5.3.0 और ऊपर के लिए काम करता है), https://github.com/meganz/mingw-std-threads यह संभव Win32 सूत्रण मॉडल के साथ std :: धागा उपयोग करने के लिए बनाता है। –

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