في البرمجة غير المتزامنة ، من الأهمية بمكان فهم الفرق بين في انتظار
و Task.Wait
. ستقوم هذه المقالة بتحليل حالة يكون سبب headlock باستخدام Task.Waitall
task.wait
: حظر متزامن
]
task.wait ستحظر مؤشر الترابط الحالي متزامنًا حتى يتم الانتهاء من المهمة. في رمز المثال ، ينتظر
task.waitall جميع المهام العشرة التي تم إرجاعها بواسطة
في انتظار
: انتظر غير متزامن
في انتظار يسمح للطريقة بإرجاع المهام غير المكتملة إلى المتصل أثناء انتظار إكمال المهمة بشكل غير متزامن. عند اكتمال المهمة ، يتم جدولة الكود المتبقي في الطريقة للعمليات اللاحقة.
]]
في طريقة
عينة من الكود ، تحجب طريقة
أبدًا ، مما يؤدي إلى طريق مسدود.
حظر العملية في الكود غير المتزامن
]
لا ينصح بشكل عام باستخدام عمليات الحظر في الكود غير المتزامن. عند حدوث حظر ، لا يمكن للمعالجة معالجة الطلبات الواردة ، مما يؤدي إلى تدهور الأداء والكمال المحتمل.
ختاماً
فهم الفرق بين
في انتظار و
Task.Wait
] يجب استخدام Task.Wait فقط في سيناريوهات محددة حيث يكون الحظر المتزامن مطلوبًا. في معظم الحالات ، يوصى باستخدام نهج "غير متزامن تمامًا" ، باستخدام في انتظار
في جميع أنحاء الكود للحفاظ على عدم التزامن ومنع مشاكل الحظر.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3