2009-07-10 12 views
8

मैं अपने आवेदन को लिनक्स से विंडोज़ में पोर्ट कर रहा हूं। मैं प्लेटफ़ॉर्म पर पोर्टिंग एप्लिकेशन की बढ़िया कला के लिए बिल्कुल नया हूं। जहां तक ​​मुझे पता है, विंडोज मूल रूप से POSIX धागे कार्यान्वयन का समर्थन नहीं करता है। क्या ये सच है? मैंने खिड़कियों (एक रैपर या कुछ) के लिए pthreads के कुछ कार्यान्वयन के बारे में सुना है, क्या यह बेहतर होगा या CreateMutex और विंडोज़ द्वारा प्रदान किए गए अन्य एपीआई का उपयोग करना बेहतर होगा ???? कोई pls। मुझे दोनों दुनिया के प्रो और कान के साथ प्रबुद्ध करें। पोर्टिंग के लिए कुछ विविध सुझाव उत्तर के साथ अच्छी तरह से जाना होगा।विंडोज के लिए कौन सा बेहतर है? pthreads या CreateMutex?

अग्रिम धन्यवाद।

उत्तर

3

एक बात आपको ध्यान में रखने की जरूरत है कि इस कोड का भविष्य क्या है। क्या आप भविष्य में दोनों प्लेटफार्मों पर विकास (और रिलीज) करने की योजना बना रहे हैं? या यह एक तरह से बंदरगाह है?

किसी प्रोजेक्ट को पोर्ट करते समय करने के लिए सबसे अच्छी बात यह है कि जितना संभव हो सके कोड में वास्तविक परिवर्तन रखें। आपके मामले में, इसका मतलब एक पठित समाधान के साथ जा रहा है। ऐसा कहा जा रहा है, अगर आप इसे एक तरह से बंदरगाह बनने की योजना बना रहे हैं, तो मूल जाकर कभी दर्द नहीं होता है। :)

मुझे दोनों स्ट्रैटजीज की पूरी तरह से जांच करने के लिए कुछ समय लगेगा और उसके बाद आपको सबसे अधिक आरामदायक महसूस होगा।

7

यह सब एक ही सामान होने जा रहा है (pthreads केवल एंटरक्रिटिकलसेक्शन इत्यादि को कॉल करने जा रहा है), इसलिए यदि आपके पास पाथ्रेड रैपर है, तो आपको शायद इसका उपयोग करना चाहिए ताकि आपको उतना कोड बदलना पड़े

0

क्यों दोनों दुनिया के सर्वश्रेष्ठ नहीं हैं और लाइब्रेरी और विंडो की एपीआई दोनों को लपेटने वाली लाइब्रेरी का उपयोग करते हैं और कवर के तहत उपयुक्त एक का उपयोग करते हैं? आपका कोड दोनों प्लेटफ़ॉर्म पर समान रहता है।

सी ++ में ऐसे libs की कोई कमी नहीं है, इसलिए मैं कल्पना नहीं कर सकता कि सी संस्करण नहीं हैं।

+0

एपीआर (अपाचे पोर्टेबल रनटाइम) एक शानदार क्रॉस-प्लेटफार्म सी लाइब्रेरी है जो यह करता है। अत्यधिक अनुशंसा की जाती है क्योंकि यह अच्छी तरह से परीक्षण किया जाता है और, उम, बल्कि लोकप्रिय है। – Clay

0

सीआरटी का उपयोग करने वाले विंडोज सी/सी ++ अनुप्रयोगों पर नए थ्रेड में सीआरटी को ठीक से शुरू करने के लिए beginthread/beginthreadex पर कॉल करने की आवश्यकता है।

1

पहली बात यह है कि मैं विंडोज़ की तुलना में लिनक्स के तहत बूस्ट थ्रेड को पोर्ट करना चाहता हूं।

+0

तो बूस्ट थ्रेड्स को पॉज़िक्स से बेहतर कैसे है? – puffadder

+0

आगे बढ़ना, बूस्ट थ्रेड, जो अगले मानक लाइब्रेरी थ्रेड बेस पर है, क्रॉस प्लेटफ़ॉर्म सी ++ में थ्रेडिंग करने के लिए अनुशंसित तरीका होगा। POSIX थ्रेड एपीआई और कच्चे Win32 थ्रेडिंग एपीआई बिल्कुल आसानी से विनिमय करने योग्य नहीं हैं। कंडीशन वैरिएबल, उदाहरण के लिए, POSIX में उपलब्ध है लेकिन सभी Win32 प्लेटफॉर्म पर नहीं है। यदि आप लाइब्रेरी पर भरोसा करने जा रहे हैं, तो उदाहरण के लिए एक पॉज़िक्स/विन 32 रैपर, आप पुस्तकालय की गुणवत्ता को नहीं जानने का जोखिम चलाते हैं, और आप बहुत मदद नहीं कर पाएंगे। दूसरी ओर बूस्ट करें, जब आप समस्याओं में भाग लेते हैं तो आपको बहुत मदद मिलती है। –

+0

धन्यवाद। वह एक मदद थी। क्या यह सी के लिए उपलब्ध है? – puffadder

5

यह अच्छी तरह से काम करता है: http://sourceware.org/pthreads-win32/

यह विंडोज के लिए pthreads पुस्तकालय का एक बंदरगाह है।

+0

मैं अपने 2 सेंट में फेंक दूंगा कि हमारे पास इस पुस्तकालय के साथ भी बहुत अच्छी किस्मत है। बहुत सारे सेफफोर्स, कतार, और पैरों के साथ एक काफी जटिल अनुप्रयोग VxWorks से POSIX और अंत में विंडोज़ पर पोर्ट किया गया था। –

+0

यह पुस्तकालय बहुत अच्छा है! – vy32

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