2012-12-18 8 views
6

मैंजीसीसी परमाणु निर्मित का उपयोग कर?

gcc -Wall -march=i686 -std=gnu99 ll.c -o ll 

साथ संकलन gccatomic builtins पेज से __atomic_load_n उपयोग करने के लिए कोशिश कर रहा हूँ, लेकिन यह मुझसे कहता है यह कर सकते हैं नहीं

warning: implicit declaration of function ‘__atomic_load_n’ 

मैंने सोचा कि यह साथ gcc प्रदान करने के लिए पर्याप्त होगा arch और march झंडे (और std=gnu99 ध्वज सेट करके सुनिश्चित किया गया है), लेकिन इसका कोई फायदा नहीं हुआ। असल में, अगर मैं सामान्य __GCC_VERSION__ या __GNUC__ मैक्रोज़ के लिए परीक्षण करता हूं तो मान भी नहीं लगता है ... लेकिन मेरे पास एक सुंदर वेनिला gcc स्थापना है, जो अनबंटू में आता है।

मुझे पता है कि मैं कुछ मूर्खतापूर्ण कर रहा हूं, लेकिन मैं यह नहीं समझ सकता कि क्या। मेरे पास जीसीसी (उबंटू/लिनारो 4.6.3-1ubuntu5) 4.6.3

कोड इस तरह दिखता है: यह एक ऐसा फ़ंक्शन है जिसे कभी भी कॉल नहीं किया जाता है (इसलिए), समस्या संकलन समय पर है।

type* func(type* p) { 
    type* q = __atomic_load_n (p, __ATOMIC_SEQ_CST); 
} 
+0

क्या आप हमें वह कोड दिखा सकते हैं जो आपको त्रुटि दे रहा है? – NPE

+0

@ एनपीई: निश्चित रूप से, प्रश्न अपडेट किए गए हैं। –

+1

मैं टाइप करने के बाद 'int'' टाइप करने के बाद आपके कोड को कोई समस्या (gcc 4.7.2) संकलित कर सकता हूं। अगर आपको अपने कंपाइलर इंस्टॉलेशन के साथ कोई समस्या है, तो शायद यह देखने के लिए एक गैर-परीक्षण लेकिन साफ ​​परियोजना बनाने का प्रयास करें? – NPE

उत्तर

13

जीसीसी 4.6.3 तक, परमाणु के संचालन के लिए संकलक बनाया-इन एक शुद्ध संकलक विस्तार थे, और जीसीसी में वे कार्यों की __sync_* परिवार में बांटा गया है।

संस्करण 4.7.0 के रूप में, नए सी ++ 11 और सी 11 मानकों को अंतिम रूप दिया गया था, और जीसीसी ने उन दो नए भाषा संशोधनों के नए मेमोरी मॉडल को बेहतर ढंग से प्रतिबिंबित करने के लिए अपने परमाणु अंतर्निर्मित अद्यतन किए। नए कार्यों को __atomic_* परिवार में समूहीकृत किया गया है।

हालांकि, पुराने बनाया-इन still available हैं, और documentation इस कहते हैं:

यह हमेशा__ATOMIC_SEQ_CST स्मृति मॉडल का उपयोग कर एक __atomic कॉल के साथ एक __sync कॉल को बदलने के लिए सुरक्षित है।

+0

जबकि '__ATOMIC_SEQ_CST' हमेशा वैध है, यह आपको आपके सीपीयू के मेमोरी मॉडल के आधार पर शोर के सुंदर उप-परिणाम प्रदान कर सकता है। –

+0

धन्यवाद, अच्छी तरह से उत्तर दिया! –

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