2010-02-23 7 views
5

एक पोर्टेबल (विंडोज, जीएनयू/लिनक्स & MacOSX) पुस्तकालय एक ताला मुक्त परमाणु स्वैप समारोह प्रदान वहाँ मुक्त है?पोर्टेबल C++ परमाणु स्वैप (विंडोज - जीएनयू/लिनक्स - MacOSX)

यदि नहीं, तो इन प्लेटफ़ॉर्मों में से प्रत्येक के लिए इसे कैसे लागू किया जाएगा? (वीसी ++ या जी ++ के साथ x86)

धन्यवाद

उत्तर

1

निर्भर करता है कि आप क्या स्वैप करने के लिए चाहते हैं। X86 के लिए असेंबलर में आप "लगभग" परमाणु xor स्वैप प्राप्त करने में सक्षम हो सकते हैं, अन्यथा मैं कुछ समाधान के साथ जाऊंगा जो लॉकिंग का उपयोग करता है, जो Win32/{Linux, Darwin} पर भिन्न होगा। http://apr.apache.org/

+0

http://apr.apache.org/docs/apr/1.3/group__apr__atomic.html#ge45c529f14f8489102382bd3fd4cce22 विशेष रूप से आपको तुलनात्मक रूप से समान मूल्य का उपयोग करके एपीआर परमाणु तुलना और स्वैप का उपयोग करना चाहिए। इसे थोड़ी देर में रखें क्योंकि यह गारंटी नहीं है कि स्वैप होगा। –

2

वहाँ boost में एक lock-free पुस्तकालय समीक्षा लंबित है -

आप देख रहे हैं एक पुस्तकालय के लिए, अप्रैल पर एक नज़र (अपाचे पोर्टेबल रनटाइम) है। अगर आप boost smart pointers लाइब्रेरी के स्रोत में खोदते हैं तो आपको कई प्लेटफार्मों के लिए रेखांकित परमाणु ओप मिलेगा। एक और इंटेल Threading Building Blocks में atomic<> टेम्पलेट का कार्यान्वयन है।

+0

... और सी ++ 0x में भी। – janneb

+0

सही ... जो काम कर रहे कंपाइलर कार्यान्वयन के बारे में बात कर रहे हैं? –

1

बूस्ट में पोर्टेबल तरीके से लॉक-फ्री ऑपरेशंस को सुविधाजनक बनाने के लिए a set of macros है।

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