في أي حاسوب بمعالج واحد (1 cpu) ذو نواة واحدة (1 core) يمكنك فتح و استعمال اكثر من برنامج و ذلك يتم عبر تنفيذ التعليمات بوضعها في طابور و ترتيب تنفيذها يعتمد على عدة عوامل ، ما أريد معرفته متى تكون الحاجة لمعالج بنواتين او معالجين بنفس الحاسوب؟ هل الجواب عند الحاجة الى multi-thread فقط؟ ان كان كذلك هل معالج بنواتين يمكن ان يحل مكان معالجين؟
إستفسار حول ال cpu
يمكن استخدام الـ multi-thread حتى في معالج بنواة واحدة في بعض المعالجات، الفكرة من تعدد الانوية هي سرعة المعالجة بحيث يمكن معالجة اكثر من process في نفس الوقت، الحاجة من استخدام معالج بأكثر من نواه هو عندما تكون هناك process كثيرة.
الا يمكن اعتبار ال thread هو process ؟ و ال multi-thread ألم توجد لعمل أكثر من process في نفس الوقت في البرنامج ام وجدت لتجنب ال block في ال code؟ او البرنامج كله يعتبر process واحد؟
الـ multi-thread وجدت لمعالجة اكثر من process في نفس الوقت هذا الامر يحصل على مستوى الـ CPU لكن عندما نتحدث عن multi-thread على الكود فهذا يحدث على مستوى الـ OS او بالضبط على مستوى Application Layer والمفهوم يختلف قليلا، هناك القصد منه معالجة اكثر من process وعلى البرمجة المقصود منه تنفيذ اكثر من process في نفس الوقت
البرنامج يقوم بتنفيذ عدة عمليات لهذا لايمكن اعتباره process واحده.
حسنا بالنسبة ل php مثلاً، ان اردت ان تستعمل multi-thread باستخدام pthread تجد ان من المتطلبات توفر اكثر من معالج (cpu) لماذا؟ لا تعتبر تنفيذ multi-thread على مستوى application ؟ غير ذلك حسب ما قرأت ان سيرفر apache يعامل كل request على انّه thread منفصل ، هذا يعتبر على مستوى application لكن هل يمكنك تفسير كيف يعمل؟ ان افترضنا انه حلقة loop لا تنتهي تستقبل ال request عند اي تأخير في request سيحدث block في السيرفر .
اريد معرفة متى تكون الحاجة الى اكثر من cpu و كيف تستعمل multi-thread في cpu واحد هل هي فعليا لا تنفذ في نفس الوقت بل تنفذ بشكل متجزء اي تنفذ جزء من الأولى ثم الثانية و هكذا
التعليقات