سؤال

والعمليات اثنين من ويندوز لديك ذاكرة المعينة نفس الملف المشترك. إذا يتكون الملف من العدادات، غير أنه من المناسب استخدام وظائف Interlocked* (مثل InterlockedIncrement) لتحديث تلك العدادات؟ وتلك مزامنة الوصول عبر العمليات؟ أو هل أنا بحاجة إلى استخدام شيء أثقل، مثل مزامنة؟ أو ربما آلية الذاكرة المشتركة نفسها يضمن وجهات النظر متطابقة.

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

المحلول

MSDN :

<اقتباس فقرة>   

...

     

وAPI متشابكة

     

وتوفر وظائف متشابكة ل   آلية بسيطة لمزامنة   الوصول إلى متغير التي يتم مشاركتها من قبل   مواضيع متعددة. أنها تؤدي أيضا   العمليات على المتغيرات في الذرية   الطريقة. خيوط مختلفة   ويمكن لعمليات استخدام هذه الوظائف إذا   المتغير في الذاكرة المشتركة.

وهكذا، نعم، وأنها آمنة مع نهج الذاكرة المشتركة الخاصة بك.

نصائح أخرى

والقصد من وظائف متشابكة بالضبط هذا النوع من الاستخدام.

http://msdn.microsoft.com/en-us/ مكتبة / ms684122.aspx :

<اقتباس فقرة>   

ووخيوط العمليات المختلفة يمكن استخدام هذه الوظائف إذا كان المتغير في الذاكرة المشتركة.

وبطبيعة الحال، إذا كنت بحاجة إلى أن يكون أكثر من عنصر واحد تحديث بالذرة، عليك أن تذهب مع مزامنة أو بعض وجوه تزامن الأخرى التي تعمل عبر العمليات. لا يوجد شيء مدمجة في آلية الذاكرة المشتركة لتوفير التزامن للوصول إلى الذاكرة المشتركة - ستحتاج إلى استخدام وظائف متشابكة أو كائن مزامنة

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