2016-02-22 6 views
5

std::atomic_flag का उपयोग करते समय, किसी को ATOMIC_FLAG_INIT का उपयोग करके इसे स्पष्ट रूप से प्रारंभ करने के लिए सावधान रहना होगा, जो त्रुटि-प्रवण है। हालांकि एक डिफ़ॉल्ट कन्स्ट्रक्टर है ... तो, क्या एक अनिवार्य स्थिति में ध्वज छोड़ने वाले डिफ़ॉल्ट कन्स्ट्रक्टर के पीछे कोई उद्देश्य कारण है?क्यों परमाणु_फ्लैग डिफ़ॉल्ट कन्स्ट्रक्टर अवश्य निर्दिष्ट राज्य छोड़ देता है?

+0

AFAIK, डिफ़ॉल्ट कन्स्ट्रक्टर को 0 के साथ चर प्रारंभ करने की गारंटी है लेकिन यह निर्दिष्ट नहीं है कि 0 "स्पष्ट" या "सेट" को संदर्भित करता है या नहीं। बेशक, यह उत्तर देने से अधिक प्रश्न उठाता है ... – 5gon12eder

+1

दुख की बात है, यह भी मामला नहीं है, cppreference के अनुसार: * [ATOMIC_FLAG_INIT] एक निश्चित मूल्य पर std :: atomic_flag को प्रारंभ करने का एकमात्र तरीका है: किसी अन्य के बाद मान प्रारंभिकता निर्दिष्ट नहीं है। *। लेकिन मुझे लगता है कि इसे अपना रास्ता देखना संभव है ... – Synxis

+2

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1379.htm – dyp

उत्तर

0

This link (टिप्पणी में dyp द्वारा पोस्ट की गई), का वर्णन करता है कि इस निर्णय लिया गया था क्योंकि कुछ आर्किटेक्चर को बिल्कुल प्रारंभ atomic_flag एक सेट राज्य के अनुरूप होता है, और कुछ पर यह एक को मंजूरी दे दी राज्य के अनुरूप होगा। इस वजह से, यह परिभाषित किया गया था कि atomic_flag जिसे स्पष्ट रूप से ATOMIC_FLAG_INIT के साथ प्रारंभ नहीं किया गया है प्रारंभ में अनिश्चित स्थिति में है।

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