الفرق بين Concurrency و Parallelism
الفرق الأساسي بين الـ Concurrency والـ Parallelism يكمن في طريقة إدارة وتنفيذ العمليات. الـ Concurrency يعني القدرة على التعامل مع عدة مهام أو عمليات في نفس الفترة الزمنية بشكل متداخل، بينما الـ Parallelism يشير إلى تنفيذ عدة مهام في الوقت نفسه فعليًا على موارد متعددة.
ما هو Concurrency؟
الـ Concurrency هو مفهوم يشير إلى وجود عدة مهام قيد المعالجة في نفس الوقت تقريبًا، لكن ليست بالضرورة أن تُنفذ هذه المهام في نفس اللحظة فعلًا. يمكن التفكير فيها على أنها جدولة ذكية للمهام حيث يتم التبديل بين المهام بسرعة بحيث يبدو أنها تحدث في نفس الوقت. هذا النموذج يستخدم بشكل واسع في البرمجة غير المتزامنة (Asynchronous programming) وفي أنظمة التشغيل التي تدير عدة عمليات عبر مراقبة وتقسيم الوقت بين هذه العمليات.
على سبيل المثال، برنامج يتعامل مع مهام إدخال/إخراج متعددة مثل تحميل ملفات من الإنترنت في نفس الوقت، وبرغم أن كل عملية تحميل قد لا تحدث بنفس الوقت تمامًا، إلا أن النظام يبدل بسرعة بين هذه العمليات ليعطي انطباعًا بأنها متزامنة.
ما هو Parallelism؟
أما الـ Parallelism فيعني تنفيذ عدة مهام فعليًا في الوقت نفسه من خلال استغلال موارد متعددة، مثل المعالجات المتعددة (Multi-core processors). هنا يتم توزيع المهام على أنوية أو وحدات معالجة مختلفة لتنفذ بالتوازي تمامًا. هذا النموذج يسمح بزيادة سرعة معالجة البيانات والأداء، حيث يمكن تنفيذ أجزاء مختلفة من برنامج أو خوارزمية معقدة بالتوازي مما يقلل من زمن الانتهاء.
مثال على ذلك عندما تقوم ببرنامج يحل مسائل رياضية معقدة، يمكن تقسيم العمل بين عدة أنوية في المعالج بحيث تعمل كل نواة على جزء من المهمة في الوقت ذاته.
كلام فني مبسط
يمكن تشبيه الـ Concurrency كأنك تعمل على كتابة عدة رسائل بين فترات من الوقت، فتكتب جملة في رسالة، ثم تنتقل إلى أخرى وتكتب جزءًا، ثم تعود إلى الأولى وهكذا. أما الـ Parallelism فإنك تجلس مع عدة أشخاص وكل واحد يكتب رسالة خاصة به في وقت واحد.
باختصار، الـ Concurrency يتعلق بإدارة الوقت والمهام بطريقة تجعلها تَبدو متزامنة، بينما الـ Parallelism يعني تنفيذ المهام حقًا في نفس اللحظة باستخدام موارد متعددة.
فهم الفرق بينهما مهم جداً عند تصميم البرامج والنظم، حيث يمكنك اختيار النموذج الأنسب حسب طبيعة التطبيق، الموارد المتاحة، والأداء المطلوب.