سؤال

يضيف C ++ 0x محددًا تخزينًا جديدًا thread_local التي لم يتم تنفيذها بعد في VS10.

ومع ذلك ، تحدد مكتبة البرمجة الموازية أ Concurrency::combinable صف دراسي الذي لديه local() وظيفة التي إرجاع إشارة إلى التنسيق الفرعي للاتصالات الخيطية.

هل هناك دلالات ل thread_local لا يمكن تغطية (بسهولة) عن طريق وجود ملف static متغير من النوع combinable<T>?

إذا لم يكن لماذا كان thread_local إضافة إلى اللغة الأساسية إذا كان يمكن تنفيذها في مكتبة؟

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

المحلول

لماذا أضاف C ++ صف دراسي كائنات ما إذا كان يمكن تنفيذها بواسطة مكتبة مثل شيء gobject هل في ج؟ لأن C ++ يريد صف دراسي الكائنات المعروفة في وقت الترجمة, ، هذا أكثر كفاءة. لذلك فإن تهيئة فئة C ++/عدم إلحاقها آمنة من الاستثناء (راي).

بعض الميزات أكثر تخصصًا وتحتاج إلى مزيد من التنفيذ. thread_local هو محدد فئة التخزين, ، لذلك يمكن أن يعرف في وقت الترجمة ويمكن للمترجم أن يفعل المزيد من التحسين.

ايضا في http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm قال:

تهيئة ديناميكية متغيرة الموضوع

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

لماذا thread_local تم تقديمها ككلمة رئيسية لغة جديدة؟ يبدو أن السبب يمكن أن يكون تهيئة ديناميكية متغيرة الموضوع.

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