ما هي كل عيوب استخدام الملفات كوسيلة للتواصل بين عمليتين؟

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

سؤال

لديّ رمز قديم أحتاج إلى تحسينه لأسباب الأداء. يتألف طلبي من اثنين من الموظفين التنفيذيين الذين يحتاجون إلى تبادل معلومات معينة. في الرمز القديم ، يكتب أحد exe إلى ملف (يتم تمرير اسم الملف كوسيطة لـ EXE) والتحقق الأول القابل للتنفيذ في حالة وجود مثل هذا الملف ؛ إذا لم يكن موجودًا في الفحص مرة أخرى وعندما يجدها ، فستمر لقراءة محتويات الملف. وبهذه الطريقة المعلومات في نقلها بين اثنين من الموظفين التنفيذيين. الطريقة التي يتم بها تنظيم الكود ، والثاني القابل للتنفيذ ناجح في المحاولة الأولى نفسها.

الآن يجب أن أقوم بتنظيف هذا الرمز وأتساءل ما هي عيوب استخدام الملفات كوسيلة للاتصال بدلاً من بعض التواصل بين العمليات مثل الأنابيب. هل فتح ملف أغلى من الأنابيب؟ هل هناك أي عيوب أخرى؟ ومدى أهمية تعتقد أنه سيكون تدهور الأداء.

يتم تشغيل الرمز القديم على كل من Windows و Linux.

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

المحلول

بعض المشكلات في استخدام ملفات IPC هي:

  • ماذا يحدث عندما تكتب العملية (1) إلى الملف عندما تجدها العملية (2)؟ يجب أن يكون لديك منطق خاص للتعامل مع هذه الحالة.

  • ماذا يحدث إذا كانت العملية (1) ترغب في إرسال رسالة أخرى أثناء العملية (2) لا تزال تقرأ من الملف؟ (1) يجب أن يكتشف بطريقة ما أنه لا يمكن كتابة الملف إليه ، والانتظار حتى يتوفر.

  • يمكن أن تصبح الملفات عنق الزجاجة كبير كميات حركة المرور ، خاصة إذا كنت تستخدم ملفًا واحدًا فقط لـ IPC.

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

ومع ذلك ، فقد استخدمت الملفات في الماضي لتمرير المعلومات بين العمليات ، على الرغم من أنه سيتم إنشاء أسماء ملفات جديدة في كل مرة أو سيتم استخدام الملفات لتمرير كميات كبيرة من البيانات وسيتم استخدام رسالة IPC أصغر للإشارة جاهز.

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

نصائح أخرى

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

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

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