क्या पोर्टेबल सी ++ के साथ थ्रेड और/या प्रक्रिया पहचानकर्ता (स्ट्रिंग, int, ...) प्राप्त करने का तरीका है?सी ++ धागा/प्रक्रिया पहचानकर्ता
उत्तर
कोई पोर्टेबल तरीका नहीं है जब पोर्टेबल का मतलब है कि पर प्रत्येक प्लेटफ़ॉर्म पर काम करता है, जिसके लिए एक C++ कंपाइलर मौजूद है। इस तरह से एक सी ++ मानक का हिस्सा होना था, इस मामले में यह वास्तव में हर जगह काम करेगा (बस सी ++ मानक काम के अन्य हिस्सों की तरह)। मानक में नहीं जो कुछ भी किसी प्लेटफॉर्म पर काम करने की गारंटी नहीं देता है, जब तक मंच इस मानक का समर्थन करने के लिए कहता है।
प्रत्येक समाधान लोगों ने यहां सुझाव दिया है कि एक समाधान है जो बाहरी पुस्तकालय का उपयोग करता है और इस प्रकार केवल उस लाइब्रेरी द्वारा समर्थित प्लेटफॉर्म पर काम कर सकता है; और प्रत्येक मौजूदा मंच के लिए कोई लाइब्रेरी उपलब्ध नहीं है।
शायद वह जो आपको सबसे दूर ले जाएगा, वह पॉसिक्स है, प्रत्येक यूनिक्स जैसे सिस्टम कम से कम कुछ पॉज़िक्स (अधिक बेहतर) का समर्थन करने की कोशिश करता है, बहुत कम खुद को वास्तव में 100% पॉज़िक्स-अनुरूप प्लेटफॉर्म (उदाहरण के लिए) ए/यूएक्स, एईक्स, एचपी-यूएक्स, आईआरईएक्स, मैक ओएस एक्स 10.5, मिनिक्स, क्यूएनएक्स, सोलारिस, यूनिक्सवेयर, वीएक्सवर्क्स, ... कुछ नाम देने के लिए, ज़ाहिर है)। हालांकि, वहां कुछ प्लेटफ़ॉर्म हैं जो कम से कम कुछ POSIX समर्थन प्रदान करते हैं, कुछ और, कुछ कम और कुछ लगभग POSIX- अनुपालन (उदा। फ्रीबीएसडी, लिनक्स, नेटबीएसडी, बीओओएस, ओपनबीएसडी, ... और अन्य) हैं।
विंडोज दुर्भाग्य से एक होने से बहुत दूर है। एनटी आंशिक रूप से POSIX अनुरूप था, लेकिन अब यह कम या ज्यादा गायब हो गया है (Win2000/20003, WinXP, और Vista को अभी भी एक POSIX अनुकरण मोड में सेट किया जा सकता है, यूनिक्स के लिए माइक्रोसॉफ्ट विंडोज सेवाओं को स्थापित करके कुछ पीओएसआईक्स कॉल को आंतरिक एपीआई कॉल में अनुवाद करना - एसएफयू 3.5 या उच्चतर), हालांकि बाहरी पुस्तकालयों के माध्यम से विंडोज़ पर कुछ पॉज़िक्स कार्यक्षमता प्राप्त करने के तरीके भी हैं (सिगविन एलजीपीएल पुस्तकालयों को प्रदान करता है जो आप अपने ऐप से लिंक कर सकते हैं ताकि विंडोज़ पर उचित मात्रा में POSIX फ़ंक्शंस सक्षम हो सकें)।
पीओएसईक्स का लाभ न केवल यह अपेक्षाकृत व्यापक है, बल्कि यह भी मानकीकृत है और आप आसानी से इंटरनेट पर मानक देख सकते हैं। POSIX कॉल का उपयोग करके आप एक थ्रेड आईडी और एक प्रक्रिया आईडी प्राप्त कर सकते हैं।
आपके पास कुछ तरीके हैं, लेकिन सभी आपके लिए धागे को सारणीबद्ध बाहरी पुस्तकालय का उपयोग करते हैं।
लोकप्रिय विकल्पों के अलावा, दो हैं:
- Boost.Thread पुस्तकालय। यह सबसे पोर्टेबल है लेकिन बूस्ट के साथ काम करता है, जो एक बड़ी लाइब्रेरी
- Qt लाइब्रेरी है। यह कम पोर्टेबल है और क्यूटी, एक बड़ी पुस्तकालय के साथ काम करने के लिए प्रलोभन है।
यदि आप इन दोनों पुस्तकालयों में पहले से ही किसी का उपयोग करते हैं, तो मैं इसके साथ चिपकने की अनुशंसा करता हूं। अन्यथा, देखें कि वे कौन से अन्य टूल प्रदान करते हैं और एक विकल्प बनाते हैं।
बूस्ट बहुत बड़ा है, लेकिन ध्यान रखें कि आप केवल जो भी उपयोग करते हैं उसके लिए भुगतान करते हैं। – Ferruccio
मैंने हमेशा सोचा था कि थ्रेड सी ++ से बाहरी थे। जावा में, भाषा में अंतर्निहित मूल धागा है।
आपको एक पोर्टेबल थ्रेड लाइब्रेरी खोजनी होगी।
मुझे यकीन नहीं है कि वे कितने पोर्टेबल हैं लेकिन Posix threads एक और विकल्प हो सकता है जिसे आप विचार करना चाहते हैं। here भी देखें। मैं स्टीव की टिप्पणी से सहमत हूं - कौन से प्लेटफॉर्म पर पोर्टेबल?
getpid() प्रक्रिया आईडी प्राप्त करने का एक पोर्टेबल तरीका है।
आप ACE library का भी उपयोग कर सकते हैं, जो एक प्लेटफार्म स्वतंत्र रैपर लागू करता है। पीआईडी ढूँढना लाइब्रेरी में फाइलों में से एक होगा (शायद ACE_Process/ACE_Thread)।
यदि आपका इरादा पोर्टेबल तरीके से प्लेटफ़ॉर्म प्रक्रिया आईडी प्राप्त करना है तो एसीई कई प्लेटफ़ॉर्म के लिए एक सिद्ध समाधान है। हालांकि हर प्लेटफॉर्म एक ही जानकारी प्रदान नहीं कर सकता है। उस स्थिति में आपको वह नहीं मिलेगा जो आप चाहते हैं। – lothar
मुझे नहीं लगता कि आपको एक पोर्टेबल विधि नहीं मिल जाएगी जब तक यह एक रैपर लाइब्रेरी के माध्यम से न हो। प्रत्येक थ्रेडिंग सिस्टम (जैसे विंडोज, या पीओएसईक्स) के पास अपनी स्वयं की तंत्र होगी।
- 1. सी ++ समारोह कॉल पहचानकर्ता
- 2. सी # पहचानकर्ता अपेक्षित?
- 3. सी 2061 सिंटेक्स त्रुटि (पहचानकर्ता)
- 4. उद्देश्य-सी - अपेक्षित पहचानकर्ता त्रुटि
- 5. मैच सी # यूनिकोड पहचानकर्ता Regex
- 6. पहचानकर्ता
- 7. सी ++ 11 रेगेक्स कैप्चर समूह पहचानकर्ता
- 8. अधिकतम पहचानकर्ता लंबाई
- 9. ओपनआईडी: पहचानकर्ता यूआरएल अद्वितीय है? क्या पहचानकर्ता
- 10. पहचानकर्ता नहीं मिला?
- 11. बंडल पहचानकर्ता
- 12. पहचानकर्ता UIStoryboardPlaceholder
- 13. NSLocalizedString - अघोषित पहचानकर्ता मुद्दा
- 14. मुक्त पहचानकर्ता के बीच अंतर =? और बाध्य पहचानकर्ता =?
- 15. सी ++ में 'पहचानकर्ता' नाम 'नाम' कब होता है?
- 16. फोरैच पहचानकर्ता और बंद
- 17. डेल्फी - अविकसित पहचानकर्ता: LOCALE_SYSTEM_DEFAULT
- 18. पहचानकर्ता "स्ट्रिंग" अपरिभाषित?
- 19. sockaddr_in undeclared पहचानकर्ता
- 20. जब पहचानकर्ता नाम
- 21. प्रोफ़ाइल बंडल पहचानकर्ता
- 22. Xcode त्रुटि: प्रत्याशित पहचानकर्ता
- 23. एक्सकोडेड पहचानकर्ता __bridge xcode
- 24. `_ [....]` वैध पहचानकर्ता है?
- 25. असीमित वाक्यविन्यास: अप्रत्याशित पहचानकर्ता?
- 26. मानचित्र कुंजी पहचानकर्ता YAML
- 27. बहु-भाग पहचानकर्ता
- 28. NHibernate.AssertionFailure: अशक्त पहचानकर्ता
- 29. पेपैल आईपीएन अद्वितीय पहचानकर्ता
- 30. जावास्क्रिप्ट अप्रत्याशित पहचानकर्ता
पोर्टेबल प्लेटफॉर्म/आर्किटेक्चर के पार पोर्टेबल? – QAZ