إنشاء مفاتيح فريدة من نوعها لقائمة انتظار رسالة لأحد التطبيقات التي يمكن أن يكون لها مثيلات متعددة

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

  •  19-08-2019
  •  | 
  •  

سؤال

ولقد جعلت من كوي التطبيق لينكس الذي يتصل بين العمليات عبر رسالة-quene.

وليس هناك مشكلة في ذلك طالما أنه هو نسخة واحدة. ولكن عندما تكون هناك حالات متعددة من نفس التطبيق، الرسائل في quene تحصل على إرسالها إلى مثيل الخطأ.

وأنا أفهم هذا يمكن تجنبها عن طريق إعطاء وظيفة msgget مفتاح فريد. باستخدام ftok () لإنشاء مفتاح، ولكن منذ المتغيرات هي نفسها التي تؤدي إلى مفاتيح متطابقة.

ويمكن للشخص أن توجه لي كيفية الحصول على مفتاح فريد لكل مثيل؟

والفكرة الوحيدة لدي الآن هو randamize المتغير نظرا لftok، و وأنا أعلم أن غير قادر على أن يكون على حق.

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

المحلول

كن حذرا مع ftok!

وهذا لن يكون إلا فريد لنظام الملفات معين، وإلا إذا ثم إذا لم يتم استخدام نظام الملفات بشكل كبير. والدافع fttok بعدد إدخال ملف في نظام الملفات.

ويستخدم هذا أن يكون وسيلة جيدة للحصول على قيم فريدة ولكن الوقت واشتعلت قانون مور مع أنه قبل بضع سنوات. وهي تعمل على أقل من 8 بت رقم الملف ولكن العدد الفعلي للملف هي الآن 32 بت والترقيم يبدأ من جديد لكل نظام الملفات.

وعملية معرف هو خيار جيد جدا، فإنها لا تحصل على إعادة تدوير ولكن ليس كما طالما أن العملية لا تزال على قيد الحياة.

نصائح أخرى

هل يمكن أن حاول استخدام معرف العملية. حصلت بلدي جوجل فو هذا

وتبحث هويات فريدة من نوعها على مستوى العالم وعادة ما تسمى ارشد أو UUID. يجب أن يكون هناك المكتبة التي يمكن استخدامها لتوليد لهم. وهي عبارة عن سلاسل فريدة من نوعها مصنوعة من عنوانك شركة الاستثمارات الوطنية، وهي المرة الحالي، ورقم عشوائي.

وماذا عن الساعة؟ يكيبيديا يقولون انها أفضل من RDTSC (SMP وآمن).

"تحت لينكس، يتم توفير وظائف مماثلة عن طريق قراءة قيمة على مدار الساعة CLOCK_MONOTONIC باستخدام وظيفة POSIX clock_gettime".

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