سؤال

أود توثيق ما هو رفيع المستوى (أي.تتوفر وظائف أو وحدات الماكرو C++ غير المضمّنة للأوليات الذرية للمقارنة والمبادلة (CAS)...

على سبيل المثال، يحتوي WIN32 على x86 على مجموعة من الوظائف _InterlockedCompareExchange في ال <_intrin.h> header.

هل كانت مفيدة؟

المحلول

سأسمح للآخرين بإدراج واجهات برمجة التطبيقات المختلفة الخاصة بالنظام الأساسي، ولكن للرجوع إليها مستقبلاً في C++09، ستحصل على

atomic_compare_exchange() 

العملية في "مكتبة العمليات الذرية" الجديدة.

نصائح أخرى

تعرف glib، وهي مكتبة نظام مشتركة على أنظمة Linux وUnix (ولكنها مدعومة أيضًا على نظامي التشغيل Windows وMac OS X). العديد من العمليات الذرية, ، مشتمل g_atomic_int_compare_and_exchange و g_atomic_pointer_compare_and_exchange.

دول مجلس التعاون الخليجي لديها بعض المدمج في الوصول الذرية, ، أيضاً.

في سولاريس يوجد "atomic.h" (أي. <sys/atomic.h>).

نظام التشغيل MacOS X لديه OSAtomic.h

كانت هناك سلسلة من أوراق مجموعات العمل حول هذا الموضوع تقترح تغييرات على مكتبة C++ القياسية. وغ N2427 (الأنواع والعمليات الذرية لـ C++) هو الأحدث، والذي يساهم في القسم 29 -- مكتبة العمليات الذرية - من المعيار المعلق.

لدى Java عملية CAS هذه أيضًا

يرى هنا

هناك استخدامات عملية لهذا، مثل قابل للتجزئة بدون قفل المستخدمة في نظام متعدد المعالجات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top