سؤال

ما هو الفرق بين الخيوط والتوازي؟

وأيهما يتمتع بميزة على الآخر؟

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

المحلول

دانيال فراشة (زميل سابق لي) - خيوط / التزامن مقابل التوازي المقال يشرح كل شيء.

ونقلت:

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

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

     

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

نصائح أخرى

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

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

ومثال واحد قد يكون لديك موضوع واحد فقط يصطف طلبات القرص وتمريرها إلى مؤشر ترابط عامل، parallelizing فعال القرص وحدة المعالجة المركزية. طريقة أنابيب UNIX التقليدية لتقسيم هذه الى قسمين برامج كاملة، ويقول "القط" والبقرى في الأمر:

cat /var/log/Xorg.0.log | grep "EE"

والخيوط يمكن أن تقلل تصور تكاليف الاتصالات نسخ القرص I / O من عملية القط لعملية البقرى.

ويشار عادة

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

والتوازي هو وجود عمليات متعددة تعمل في الوقت نفسه على وحدة المعالجة المركزية متعددة.

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

ومعظم نظام التشغيل على بينة من وحدة المعالجة المركزية متعددة ل / النوى، ويمكن استخدامها، ولكن هذا يجعل جدولة عادة معقدة جدا.

إذا كان لديك والبرمجة بلغة يستخدم VM (جهاز ظاهري)، أن تدرك أنها بحاجة إلى تنفيذ جدولة الخاصة بهم (على كل حال)

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

وبعض أنظمة التشغيل مثل DragonFlyBSD تتخذ نهجا مختلفا كله لجدولة ثم ماذا في هذه اللحظة هو النهج "القياسية".

وأعتقد أن هذا الجواب يعطيك ما يكفي من الكلمات الرئيسية للبحث عن مزيد من المعلومات: -)

والخيوط والتكنولوجيا، التوازي هو النموذج الذي يمكن تنفيذها باستخدام خيوط (ولكن يمكن بسهولة مثلما يتم ذلك باستخدام خيوط واحدة على معالجات متعددة)

وهنا هو أفضل إجابة لطرد الشكوك أي شخص المتصلة التوازي وخيوط.

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

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

     

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

     

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

جوابا فيكتور Eijkhout على قرة .

كيف يمكنك تعريف "التوازي"؟يعد تعدد مؤشرات الترابط تطبيقًا ملموسًا لمفهوم تنفيذ البرنامج الموازي.

يبدو أن المقالة المرتبطة بـ RichardOD تهتم بشكل أساسي بما إذا كان يتم تنفيذ الخيوط بالفعل بالتوازي على آلة خرسانية.

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

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

والتخييط هو التوازي الرجل الفقير.

وتحرير: لمزيد من الدقة:

والخيوط له علاقة التوازي والحكمة بالعكس لا شيء. خيوط عبارة عن جعل تشعر بأن بعض عمليات تشغيل في نفس الوقت. ومع ذلك، هذا لا يجعل العمليات ل<م> كاملة ALL أعمالهم أي أسرع في المجموع.

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

كما هو الحال في الشركة التي لديها العديد من العمال، تحتوي وحدة المعالجة المركزية أيضًا على العديد من الخيوط.

كما قد يكون هناك أكثر من شركة واحدة وبالتالي قد يكون هناك أكثر من وحدة معالجة مركزية واحدة.

لذلك عندما يعمل العمال (الخيوط) في شركة (وحدة المعالجة المركزية)، يتم استدعاؤهم خيوط.

وعندما تعمل شركتان أو أكثر (CPU) بشكل مستقل أو معًا، يتم استدعاؤها تماثل.

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