1. مقدمة
في الآونة الأخيرة ، كنت أجري مقابلة وأراجعت متعددة الخيوط مرة أخرى ، على أمل تعميق فهمي للمتعدد.
1. ما هي العملية؟
1). لفهم المواضيع ، يجب أن نفهم العملية أولاً. بشروط Layman ، العملية هي تطبيق يعمل في النظام.
2). كل موضوع موجود بشكل مستقل ويعمل في مساحة الذاكرة المخصصة والمحمية.
3). على سبيل المثال ، عند فتح نظام QQ أو XCode ، سيتم فتح عمليتين بشكل منفصل كما هو موضح في الشكل:
4) يمكننا عرض العمليات التي تم تمكينها في نظام MAC من خلال "شاشة النشاط".
2. ما هو الموضوع؟
1). يجب أن تحتوي العملية على مؤشرات ترابط لتنفيذ المهام ، أي أن العملية يجب أن تحتوي على مؤشر ترابط واحد على الأقل.
2). المواضيع هي وحدة التنفيذ الأساسية لعملية ما ، ويتم تنفيذ جميع مهام العملية (البرنامج) في الخيط.
3). على سبيل المثال ، يتطلب استخدام Kugou لتشغيل الموسيقى واستخدام Thunder لتنزيل الأفلام الجري في الموضوع كما هو موضح في الشكل:
3. ما هو الموضوع التسلسلي؟
1). يتم تنفيذ مؤشر الترابط بشكل تسلسلي (تم تنفيذها بالتتابع) ، مما يعني أنه لا يمكن لخيط تنفيذ مهمة واحدة إلا في نفس الوقت.
2). مخطط التنفيذ التسلسلي ، مثل تنزيل مؤشر ترابط واحد 3 ملفات (الملفات A ، B ، C)
4. ما هو متعدد الخيوط؟
1). يمكن فتح مؤشرات ترابط متعددة في عملية ، ويمكن لكل مؤشر ترابط القيام بمهام مختلفة في وقت واحد (في وقت واحد).
2). الموضوع ----> عمال ورشة العمل
3). رسم تخطيطي متعدد الخيوط ، مثل فتح 3 مؤشرات ترابط في نفس الوقت لتنزيل 3 ملفات (الملفات A ، B ، C)
5. مبدأ القراءة المتعددة
1). في الوقت نفسه ، يمكن لوحدة المعالجة المركزية تنفيذ مؤشر ترابط واحد فقط ، ويعمل مؤشر ترابط واحد فقط (التنفيذ).
2). التنفيذ المتزامن متعدد الخيوط (متزامن) هو في الواقع وحدة المعالجة المركزية (المحولات) بسرعة (مفاتيح) بين مؤشرات ترابط متعددة.
3). إذا قامت وحدة المعالجة المركزية بجدولة مؤشرات الترابط بسرعة كافية ، فسوف يتسبب ذلك في وهم التنفيذ المتزامن متعدد الخيوط.
4). عيوب القراءة المتعددة:
1. سيشغل كل مؤشر ترابط مساحة معينة من الذاكرة (افتراضيًا: يشغل الخيط الرئيسي 1 ميجابايت ويحتل موضوع الطفل 512 كيلو بايت).
إذا تم تشغيل عدد كبير جدًا من المواضيع ، فسيشغل الكثير من مساحة الذاكرة ، مما سيؤدي إلى تدهور أداء البرنامج.
2. كلما زاد عدد المواضيع ، زادت النفقات العامة لخيط جدولة وحدة المعالجة المركزية (على غرار عمال المصنع ، زاد النفقات العامة للمصنع).
3. اجعل البرمجة أكثر تعقيدًا: مثل اتصال البيانات متعدد الخيوط ومشاركة البيانات بين مؤشرات الترابط المتعددة.
5). مزايا multithreading:
1. يمكن تحسين كفاءة تنفيذ البرنامج بشكل مناسب.
2. يمكن تحسين استخدام الموارد بشكل مناسب (وحدة المعالجة المركزية واستخدام الذاكرة)
6. ما هو الموضوع الرئيسي؟
1) سيتم فتح موضوع. يسمى هذا الموضوع "الخيط الرئيسي" أو "مؤشر ترابط واجهة المستخدم".
2). الوظائف الرئيسية للخيط الرئيسي:
1. عرض/تحديث واجهة واجهة المستخدم
2. التعامل مع أحداث واجهة المستخدم (مثل أحداث النقر ، وأحداث التمرير ، وأحداث السحب ، إلخ)
3). ملاحظات على الموضوع الرئيسي:
1. لا تضع عمليات مستهلكة للوقت في الخيط الرئيسي. سوف تتسبب العمليات المستهلكة للوقت في الخيط الرئيسي في تأخر البرنامج.
7. عملية الاستهلاك للوقت التجريبي
1) العرض التوضيحي مباشرة في الخيط الرئيسي
-(void) touchesbegan: (nsset <Uitouch *> *) يلمس مع: (uievent *) الحدث {// احصل على طريقة التنفيذ الحالية والموضوع الحالي // number == main thread // number! = threads other ، theldsh thinds main reads main) ؛ عملية واجهة المستخدم إلى التأتأة [الذاتية الذاتية] ؛}#pragma mark-for-csporting- (void) longtimeOperation {for (int i = ؛ i <؛ i ++) {nslog (@"٪ d" ، i) ؛}}}2) العرض التوضيحي في خيط الطفل
-(void) touchesbegan: (nsset <Uitouch *> *) يلمس مع: (uievent *) الحدث {// احصل على طريقة التنفيذ الحالية والمعلومات الحالية // number == main thread // number! = threads other ، that that that that that ns. في موضوع الطفل للتنفيذ دون التأثير على عملية واجهة المستخدم [SelfseSelectorInbackground: selector (long rectimeOperation) withObject: nil] ؛}#pragma mark-consing-charing- (void) longtimeOperation {for (int i = ؛ i <؛ i ++) {nslog (@"٪ d" ، i)المحتوى أعلاه هو المعرفة متعددة الخيوط بنظام iOS الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك!