मैं परमाणु (डबल) तुलना और स्वैप निर्देशों का उपयोग कर लॉक-फ्री तंत्र को कार्यान्वित कर रहा हूं। cmpxchg16bलॉक-फ्री संरचनाओं के लिए सी ++ परमाणु संचालन
मैं वर्तमान में इसे असेंबली में लिख रहा हूं और फिर इसे जोड़ रहा हूं। हालांकि, मुझे आश्चर्य हुआ कि क्या संकलक को मेरे लिए यह स्वचालित रूप से करने का कोई तरीका था? जैसे चारों ओर कोड कोड 'परमाणु रूप से' है और क्या यह समझता है कि अंतर्निहित प्रोसेसर आर्किटेक्चर में परमाणु निर्देश के रूप में कोड को कैसे कार्यान्वित किया जाए (या अंतर्निहित आर्क इसका समर्थन नहीं करता है) संकलित समय में त्रुटि उत्पन्न करें?
पीएस मुझे पता है कि जीसीसी कुछ बनाया-इन (कम से कम कैस के लिए)
http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins
एमएसवीसी ने ओप को इंटरलॉक किया है, और जीसीसी ने अंतर्निहित परमाणु कार्यों का निर्माण किया है, इसलिए इनलाइन असेंबलर को करने की कोई आवश्यकता नहीं है। कंपाइलर रैपर का उपयोग करके, आप कंपाइलर – bdonlan
द्वारा समर्थित सभी प्लेटफॉर्म पर पोर्टेबल रहेंगे, एमएसवीसी ने केवल लंबे डेटाटाइप के लिए ओप को इंटरलॉक किया है, ओपी डबल्स चाहता था। – gbjbaanb
जीसीसी ने डीडब्ल्यूसीएएस के लिए ओप में कोई निर्माण नहीं किया है। एमएसवीसी ने डीडब्ल्यूसीएएस के लिए बनाया है। कोई ओएस में वृद्धि, कमी, इत्यादि के लिए डीडब्ल्यू (डबल शब्द, उदाहरण के लिए दो पॉइंटर लंबाई, तरफ से तरफ) नहीं है - डीडब्ल्यू केवल मौजूद है और केवल सीएएस के लिए मौजूद है (और केवल अस्तित्व में है)। –