هل C ++ STATIC STATIC STATION TILESIONISTIONINGERINGERINGERINGERINGERINGERINGERINGERINGERINGERINGES AFT؟

StackOverflow https://stackoverflow.com/questions/1962880

سؤال

وفقًا للموارد التالية ، في C ++ (خصيصًا C ++) ، فإن التهيئة المتغيرة الثابتة المتغيرة SCOPED ليست آمنة. ولكن ، المتغيرات الساكنة العالمية آمنة.

المتغيرات الثابتة آمنة من الخيط بدون طفرات؟

http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx

لذلك ، هل يتبع رمز مع عضو متغير عضو ثابت؟

class TestClass
{
public:
   static MyClass m_instance;
}

Myclass TestClass::m_instance;

شكرا لك مقدما!

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

المحلول

إنها أكثر مسألة للمتغيرات الثابتة التي يتم سكبها في الوظائف مقابل كل نوع آخر من المتغيرات الثابتة ، بدلاً من تحديد النطاق مقابل الكرات.

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

نصائح أخرى

نعم(*). عندما تتم تهيئة الإحصائيات العالمية ، لا يوجد سوى سلسلة واحدة حولها ويتم استدعاء جميع المنشئين. هذا ليس صحيحًا بالنسبة لإحصائيات الوظيفة.

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

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