मुझे कोई अनुमान नहीं है कि इस समारोह के लिए "सी ++" लिंक के बजाय "सी" क्यों होना वांछनीय होगा।std :: atomic_thread_fence के पास "सी" लिंक क्यों है?
उत्तर
atomic_thread_fence
गैर-परमाणु और आराम से परमाणु पहुंच के स्मृति सिंक्रनाइज़ेशन ऑर्डरिंग को स्थापित करता है।
Concurrency, विशेष रूप से आराम से स्मृति concurrency, एक कुख्यात सूक्ष्म और त्रुटि प्रवण डोमेन है, और इसलिए इस तरह के अनुकूलन की पुष्टि बहुत रुचि है। Ref1।
ऐसी चीज के लिए व्यापक रूप से CompCertTSO का उपयोग किया जाता है।
CompCertTSO एक कंपाइलर है जो क्लाइट्सओ से x86 असेंबली कोड उत्पन्न करता है, सी प्रोग्रामिंग भाषा का एक बड़ा सबसेट थ्रेड प्रबंधन और सिंक्रनाइज़ेशन के लिए समवर्ती प्राइमेटिव के साथ बढ़ाया गया है, और x86-TSO मॉडल के आधार पर एक टीएसओ आराम से स्मृति मॉडल के साथ।
तो, सत्यापन के लिए, अनुकूलन और परीक्षण उद्देश्यों के लिए इस कार्य के लिए "सी" संबंध होना वांछनीय है।
यह LWG issue 1479 द्वारा जोड़ा गया था जो C++ 11 पर अंतिम मिनट की टिप्पणी को संबोधित कर रहा था।
इस परिवर्तन के लिए तर्क सी भाषा संगतता थी (सी 11 थ्रेड लाइब्रेरी समान रूप से नामित फ़ंक्शन atomic_thread_fence stdatomic.h में है)।
जहां तक मैं समझता हूं, यह हमेशा एक योजना थी कि सी और सी ++ परमाणु पुस्तकालयों का सह-अस्तित्व हो सकता है: compatiblity के अन्य उदाहरण std :: atomic के लिए सी-संगत प्रकार उपनाम हैं, जैसे atomic_int
और सी-संगतता मैक्रो ATOMIC_VAR_INIT
मुझे समझ में नहीं आता कि सी और सी ++ प्रोटोटाइप कैसे संगत हैं, यह देखते हुए कि सी ++ प्रोटोटाइप std नेमस्पेस में है। – WaltK
@WaltK मुझे लगता है कि यह '
@ वाल्टके बिल्कुल 'पाप' या 'printf' की तरह। –
- 1. पास std algos सी ++
- 2. std :: u16cout क्यों गुम है?
- 3. std :: iterator क्यों बहिष्कृत है?
- 4. std :: std :: set के साथ काम क्यों नहीं करता है?
- 5. लिंक क्यों है। लिंक में पूंजीकृत स्ट्रिंग लौटने के लिए?
- 6. क्यों std :: stof, std :: stod, और std :: अपवादों के साथ स्टॉल हैंडल त्रुटियां क्यों करें?
- 7. std :: quick_exit और std :: abort के बीच क्या अंतर है और std :: quick_exit क्यों आवश्यक था?
- 8. सी ++ std :: स्वतंत्र std :: threads
- 9. `std` मॉड्यूल अव्यवस्थित क्यों है?
- 10. सी ++ 11 परमाणु। यह संकलित क्यों है, लेकिन लिंक नहीं है?
- 11. सी ++ 14 में कोई std :: allocate_unique फ़ंक्शन क्यों नहीं है?
- 12. सी ++ std :: वेक्टर में कोई pop_front विधि क्यों नहीं है?
- 13. std :: std :: सेट पर for_each, सी ++ 11
- 14. सी-एरे के पास फ़ंक्शन में पास होने पर गलत आकार() मान क्यों होता है?
- 15. grails छ: लिंक पास पैरामीटर
- 16. गतिशील सरणी के साथ सी ++ गुणा क्यों std :: वेक्टर संस्करण
- 17. कोई std :: stou क्यों नहीं है?
- 18. रुबी के पास संख्यात्मक क्यों है? नया?
- 19. गो के पास "गोटो" कथन क्यों है
- 20. जंग के ऑपरेटरों के पास आउटपुट चर प्रकार क्यों है?
- 21. मेरी कक्षा में स्थिर सदस्य क्यों होने पर मेरा सी ++ प्रोग्राम लिंक क्यों नहीं होगा?
- 22. सी ++ एक कॉन्स std :: स्ट्रिंग के बजाय स्ट्रिंग अक्षर को पास कर रहा है?
- 23. सी ++ 11: std :: condition_variable std :: unique_lock का उपयोग क्यों करता है?
- 24. कोई std :: सुरक्षा क्यों नहीं है?
- 25. std :: स्ट्रिंग सी # में?
- 26. std :: सूची के लिए कोई ऑपरेटर [] क्यों नहीं है?
- 27. std :: unique_ptr को कैसे पास किया जाए?
- 28. क्यों std :: lock_guard/std :: unique_lock उपयोग प्रकार मिटा नहीं है?
- 29. std :: condition_variable इसकी आवश्यकता क्यों है std :: mutex
- 30. क्यों cout के बजाय std :: cout?
ऐसा इसलिए हो सकता है क्योंकि वही कार्य 'सी' http://en.cppreference.com/w/c/atomic/atomic_thread_fence में मौजूद है और यह केवल आयात किया गया है (std namespace में) संस्करण? –