‫مرحبًا بعودتك.
‫في هذا الفيديو ، سنبحث في سلاسل الرسائل ، وبالتالي سنقوم فقط بالمفهوم الأساسي للخيوط
‫حيث سترى كيفية إنشاء سلسلة رسائل وكيفية إنشاء سلاسل رسائل متعددة.
‫لذلك دعونا نبدأ باستخدام السطر الأيمن لوحدة التحكم بطريقة محددة.
‫لذلك سأقوم بإنشاء عوالم متعددة ، على سبيل المثال ، أربعة منهم ، وسأقول مرحبًا بالعالم
‫الأول ، مرحبًا بالعالم الثاني والثالث والرابع.
‫إذاً تلك العوالم ، إذا قمنا بتشغيلها ، فنحن بالطبع نحتاج أولاً وقبل كل شيء إلى التحكم في الخط الأحمر بحيث تظل وحدة التحكم
‫مفتوحة وتبقى مستيقظة.
‫إذا قمنا بتشغيلها ، فسيكون ما سيحدث أمرًا أساسيًا للغاية.
‫لذلك سيقومون بطباعة Hello World أربع مرات على الشاشة.
‫ومن ثم نحن مرحبا العالم.
‫واحد ، اثنان ، ثلاثة ، أربعة.
‫حسنًا ، هذا ليس شيئًا جديدًا.
‫لقد رأينا ذلك كثيرًا من قبل ، ولكن هناك شيء يسمى الخيط ، فئة تسمى الخيط.
‫وإذا أردنا استخدامه ، فنحن بحاجة إلى استخدام مساحة اسم مؤشر الترابط.
‫لذلك باستخدام مؤشر ترابط النظام وهذا كل شيء.
‫حتى الآن يمكننا استخدام الخيوط.
‫لذلك يمكنني المضي قدمًا واستخدام فئة الموضوع وكما ترون ، يتم إنشاء موضوع والتحكم فيه وتحديد
‫أولويته والحصول على حالته.
‫إذن ما يمكننا فعله الآن هو ، على سبيل المثال ، استخدام وضع السكون النقطي للخيط لفترة محدودة من الوقت ، لذلك
‫لنفترض أن 1000 مللي ثانية.
‫لذا فإن هذا سيفي بالغرض هو أنه سيوقف برنامجنا بالكامل أو مؤشر ترابطنا مؤقتًا في
‫هذه الحالة ، الخيط الرئيسي أو الخيط الذي يكون فيه لمدة 1/2 بعد طباعة helloworld على الشاشة ويمكننا
‫فعل ذلك بالفعل بعد كل عبارة.
‫لذلك سأقول فقط نم لفترة محددة من الوقت وبعد ذلك نحن.
‫مرحبًا بالعالم الأول والثاني والثالث والرابع.
‫لذلك يتوقف إذا قمت بالنقر فوقه.
‫لكن بشكل عام يمكنك أن ترى أنه انتظر لمدة 1/2 وبعد تلك الثانية طبع الشيء التالي.
‫لذا فإن ما يفعله ببساطة يوقف الموضوع بأكمله.
‫لذلك يوقف سلسلة المحادثات الحالية لعدد محدد أو محدد من المللي ثانية.
‫لذلك هذا شيء يمكنك القيام به إذا كنت تريد القيام بشيء ما بعد فترة زمنية محددة.
‫لكن كن على علم بأن هذا يوقف الخيط الرئيسي حقًا.
‫لذلك لا يوجد شيء يجب القيام به ، دعنا نقول أنه يمكن القيام به في مؤشر ترابط واجهة المستخدم.
‫نحن لا نستخدم واجهة المستخدم هنا ، نحن نستخدم تطبيق وحدة التحكم في هذه الحالة.
‫ولكن إذا كنت تستخدم WPF ، على سبيل المثال ، للحصول على واجهة مستخدم وقمت بإيقاف مؤشر الترابط الرئيسي مؤقتًا لمدة 1/2
‫، فهذا يعني أن واجهة المستخدم لن تستجيب لمدة ثانية كاملة ، وهذا شيء لا يريده المستخدم ، وهذا سيكون
‫سلوكًا سيئًا للغاية ولا يجب عليك فعله.
‫ولكن هذا بشكل عام فقط لفهم ما يمكنك فعله مع الخيوط هنا ، أليس كذلك؟
‫لذلك يمكنك أن تشكل تهديدًا لفترة محددة من الوقت.
‫لكننا نستخدم خيطًا واحدًا فقط.
‫إنه الموضوع الرئيسي وإذا كنت تريد معرفة المزيد عنه ، فعليك تصحيح الأخطاء.
‫وللقيام بذلك ، نضيف نقطة هنا.
‫إذن ، مجرد نقطة تصحيح حيث تضغط ببساطة على هذا الشريط هنا على اليسار ، دعنا نقول في السطر التاسع ، حيث تبدأ
‫الطريقة الرئيسية.
‫وبعد ذلك تبدأ البرنامج وكما ترى ، لن يتم عرض أي شيء لأنه يتوقف مؤقتًا هنا.
‫هذا هو المكان الذي نحن فيه حاليًا ، هذا هو المؤشر.
‫ولكي نرى الآن المهام ، نحتاج إلى الانتقال إلى تصحيح أخطاء Windows ثم تحديد سلاسل الرسائل هنا.
‫أو يمكنك الضغط على control alt h.
‫لذلك سأقوم بفتح الخيوط وكما ترون ، فهي تطفو بالنسبة لي الآن
‫وسأضعها هنا على الجانب الأيسر.
‫والآن يمكنك رؤية الخيوط التي تعمل وفي حالتنا لا نرى سوى الخيط الرئيسي.
‫لذلك هناك مؤشر ترابط واحد فقط وله معرف مُدار من الصفر.
‫إذن هذا هو الخيط الرئيسي لدينا وهو عمومًا يفعل كل ما هو ضمن طريقتنا الرئيسية.
‫لذلك إذا انتقلت إلى الخطوة التالية.
‫كما ترون ، ما زلنا في الموضوع الرئيسي وننتظر 1/2.
‫نرى كيف نفتحه للعالم.
‫يمكنك أن ترى ذلك.
‫لذا فهي الآن قصة العالم الثالث.
‫ننام لمدة 1/2 ثم ينتظرنا أن نذهب للخطوة التالية.
‫لذا يمكنك الضغط على F عشرة للانتقال إلى الخطوة التالية ثم يعرض hello world لثانية واحدة فقط لاحقًا.
‫نعم نحن كذلك.
‫مرحبًا بالعالم الأربعة.
‫ثم يظهر هذا الخط الأحمر.
‫الآن سأضغط على شيء مثل إدخال أو أي شيء وهنا وانتقل إلى الخطوة التالية.
‫وكما ترى ، ما زلنا في الموضوع الرئيسي.
‫ويتم إغلاق برنامجنا ، لذلك لم تعد هناك أية مواضيع.
‫هذا جيد وكل شيء ، ولكن هذا مجرد موضوعنا الرئيسي وهذا ممل بعض الشيء.
‫نريد أن نرى كيفية إنشاء سلاسل الرسائل وهذا ما نحن هنا من أجله.
‫لذلك دعونا نمضي قدمًا وننشئ سلاسل رسائل متعددة بمفردنا ، لأن ما يحدث هنا هو أنه يتم بشكل
‫متسلسل.
‫لذا خطوة بخطوة ، صف تلو الآخر.
‫ولكن إذا أردنا القيام بأشياء على التوازي ، فيمكننا إنشاء مؤشر ترابط خاص بنا لأننا لا نريد تشغيله في
‫السلسلة الرئيسية ، لكننا أردنا تشغيل Parallelly.
‫لذا ما سأفعله هو أنني سأخلق تهديدًا جديدًا هنا.
‫سأقول جديدًا ثم سأطلق عليه اسم الموضوع.
‫لذلك أنا فقط أستخدم فئة الموضوع هنا وتحتاج إلى أقواس وأقواس مرة أخرى.
‫وبعد هذين القوسين ، الثاني ، وهنا تستخدم الأقواس المتساوية والجيبية والمتعرجة.
‫وبعد ذلك ، بعد إغلاق القوس هنا ، عليك أن تبدأ.
‫هذه هي الطريقة التي تبدأ بها موضوع.
‫لذلك قمت بإنشاء سلسلة رسائل جديدة وبدأت على الفور لأنني أتصل بـ Start Here.
‫تؤدي طريقة البدء فقط إلى قيام نظام التشغيل بتغيير حالة المثيل الحالي إلى حالة مؤشر الترابط قيد
‫التشغيل.
‫لذا فإن هذا الخيط سيكون به حالة مؤشر الترابط هذه قيد التشغيل ، مما يعني أنه سيقوم ببساطة بتنفيذ كل
‫ما هو داخل أقواسها المتعرجة.
‫هذا هو المكان الذي يمكننا فيه إضافة الكود الخاص بنا الذي نريد تشغيله كلما تم استدعاء هذا الموضوع.
‫لنفترض أن هذا الخيط هنا هو خيطنا الأول.
‫لذا سأكتب شيئًا مثل الخيط الأول ، CW Thread one ، وفوق ذلك سوف أنام
‫لثانية.
‫لذا نم لمدة 1000 مللي ثانية ، أي 1/2.
‫هذا ما سيفعله هذا الخيط.
‫وما سأفعله هو أنني سأضع عدة سلاسل تحت ذلك.
‫إذن ، خيط واحد ، اثنان ، ثلاثة ، أربعة.
‫لذا سأقوم بإعادة تسمية هؤلاء وسأقوم بالتعليق.
‫تلك التي لدينا من قبل.
‫إذن وحدة التحكم في الخطوط اليمنى والآن لنشغلها.
‫وها نحن ذا.
‫كما ترى ، ظهرت كلها في نفس الوقت.
‫لذلك انتظر لمدة 1/2 ثم جاءوا جميعًا في نفس الوقت.
‫إذن ما الذي كان يحدث هناك؟
‫اسمحوا لي في الواقع أن أخوض في هذه النقطة هنا وربما النقطة.
‫أجل ، هناك.
‫لذلك دعونا نديرها مرة أخرى.
‫الآن نرى برنامجنا يتوقف هنا.
‫هذا هو المكان الذي يوجد فيه.
‫ولكن في نفس الوقت ، هنا في نافذة الخيط هنا في الأسفل ، يمكنك أن ترى
‫أن هناك خيطين تم فتحهما بالفعل وخيط عامل بدون اسم وخيط عامل آخر بدون اسم أيضًا.
‫لذلك لدينا هذا الخيط الجديد الذي يعمل بالفعل ، ثم يتم فتح أحد الخيوط الأخرى أيضًا.
‫وكما ترون الخيط الرئيسي كذلك.
‫لذلك هناك ثلاثة خيوط في نفس الوقت.
‫لننتقل الآن إلى الخطوة التالية.
‫كما ترون في تلك المرحلة ، فجأة هناك أربعة خيوط ، وبالتالي هذه هي الأربعة التي لدينا
‫هنا.
‫لذلك عندما بدأ الأول ، ربما كان الثاني فقط جاهزًا بالفعل ، لكن الآخر لم يكن جاهزًا
‫بعد.
‫والآن عند هذه النقطة حيث ينزلق الخيط لمدة 1000 مللي ثانية بعد انقضاء ميلي ثانية أو أقل ، يمكنك
‫أن ترى أن الخيوط الأخرى قد بدأت بالفعل.
‫لذلك لدينا أربعة خيوط تعمل في نفس الوقت.
‫لذلك لدينا حل متعدد الخيوط هنا.
‫وإذا قمت بالخطوة التالية ، حسنًا ، كما ترون ، يتم عرض الخيط الثاني والثالث والرابع بالفعل ، لكن
‫وحدة التحكم في السطر الأيمن واحد كما ترى ، لم يتم عرضها حتى الآن.
‫لذا فهي تعمل بالتوازي ، لكنها ليست دقيقة تمامًا كما ترون.
‫لذلك يمكن أن تكون هناك اختلافات طفيفة في الوقت الذي يحتاجون فيه إلى التنفيذ.
‫لذا سأنتقل إلى الخطوة التالية في هذا الصف هنا.
‫وكما ترون الآن ، يتم عمل الخيط الأول أيضًا.
‫لذلك على الرغم من أن الخيوط.
‫أو بترتيب معين هنا ، في الكود الخاص بي ، يتم تشغيلهم بشكل أو بآخر في نفس الوقت.
‫وكما ترى ، ليس من الضروري أن تكون بالترتيب الدقيق ، كما كنا نظن.
‫لذلك لن يتم الانتهاء بالترتيب الدقيق الذي وضعناه هنا.
‫ولكن بناءً على السرعة التي يمكنهم بها إنهاء أو تنفيذ أي كود.
‫لذلك يمكن أن يحدث أن هذا الرمز يحتاج إلى وقت أطول قليلاً من ذلك أو أطول بكثير من الرموز الأخرى.
‫لذلك هذا ما يجب عليك إزالته من هذا حتى تتمكن من العمل مع الخيوط ، ولكن عليك أن تكون شديد
‫الحذر لأنه من المحتمل أن تكون هناك عدة أشياء يمكن أن تسوء.
‫وسأقوم بتغطية بعض منها وسأعرضها عليك أو أقدمها لك ، وسأقوم بتغطية بعضها.
‫وسأشارك الروابط معك أيضًا ، حيث يمكنك قراءة المزيد حول ذلك.
‫هذا يتعلق بالفكرة الأساسية حول كيفية إنشاء سلاسل الرسائل.
‫كما ترى ، هكذا يمكنك إعداد الأشياء.
‫لذا فإن الخيوط بشكل عام هي جزء صغير من العمل أو جزء من العمل يتم تنفيذه ، ويمكنك تنفيذ
‫عدة أشياء في نفس الوقت إذا كان لديك نوى متعددة في معالجك.
‫لنفترض أن لديك معالجًا رباعي النواة ، ثم يمكن تنفيذ أربعة خيوط أو أربعة معالجات
‫في نفس الوقت.
‫إذا كان لديك ، دعنا نقول ، معالج واحد فقط ، ثم يمكن تنفيذ مؤشر ترابط واحد أو مهمة واحدة فقط في ذلك الوقت ، فلن يحدث أبدًا
‫للقيام بذلك.
‫سيتم تنفيذها بالتوازي لأن هذا المعالج الواحد يقوم بشيء واحد محدد فقط في كل مرة.
‫هذا يعني أنه إذا كنت تعلم أنك تعمل مع معالج متعدد النواة أو أن التطبيق الخاص بك سيعمل
‫على معالج متعدد النواة ، فيمكنك العمل مع خيوط متعددة ، وإلا ستواجه مشكلات.
‫ولكن بشكل عام ، كيف يعمل ، إذا كان لديك نواة واحدة فقط ، فسيتم تشغيل الخيط الرئيسي وفقط
‫إذا كان الخيط الرئيسي خاملاً ، فسيستمر في القيام بأشياء أخرى.
‫لذلك ستواجه تهديدات أخرى.
‫لنفترض أن لديك واجهة مستخدم وأنك تعرض الأشياء في واجهة المستخدم هذه فقط.
‫لديك زر.
‫ثم إذا قمت بالمرور فوق الزر ، فسيغير مظهره ، وأشياء من هذا القبيل.
‫هذا شيء يتم بواسطة الخيط الرئيسي.
‫ولكن إذا لم يكن الخيط الرئيسي مشغولاً ، فستبدأ المواضيع الأخرى.
‫إذن ماذا لو كان لديك شيء يجب تشغيله في الخلفية ، فسيتم ذلك عندما لا يكون
‫الخيط الرئيسي مشغولاً أو مؤشر الترابط صفر.
‫في الواقع إنه هنا.
‫هذا عن المواضيع.
‫سننظر في الخيوط أكثر قليلاً بالطبع ، لكن بشكل عام هذا ما أردت أن أريكم إياه
‫للبدء.