يتطلب بناء تطبيقات Rust غير المتزامنة فهم أنماط التزامن المعقدة. توفر هذه المهارة أنماط Tokio الجاهزة للإنتاج للمهام والقنوات والبث والتعامل مع الإغلاق السلس.
下載技能 ZIP
在 Claude 中上傳
前往 設定 → 功能 → 技能 → 上傳技能
開啟並開始使用
測試它
正在使用「rust-async-patterns」。 إنشاء دالة async تجلب البيانات من 5 عناوين URL مع حد تزامن يبلغ 3
預期結果:
يستخدم stream::iter مع buffer_unordered(3) لمعالجة عناوين URL بشكل متزامن، مع إرجاع Vec من Results مع معالجة أخطاء مناسبة لكل عملية جلب.
正在使用「rust-async-patterns」。 كيف أشارك الحالة بين مهام async بأمان؟
預期結果:
يوصي باستخدام Arc<RwLock<T>> للأحمال الكثيفة القراءة أو Arc<Mutex<T>> للسيناريوهات الكثيفة الكتابة، مع أمثلة توضح أنماط .read().await و .write().await.
安全審計
安全All 51 static analysis findings are false positives. The skill contains documentation-only markdown files with Rust code examples. The static analyzer incorrectly flagged: markdown code fence backticks as shell execution, tokio::spawn (async task spawning) as process execution, SQL queries as system reconnaissance, and example URLs as hardcoded secrets. No executable code or security risks present.
品質評分
你能建構什麼
تطوير خدمات الشبكة
بناء خوادم HTTP متزامنة أو معالجات WebSocket باستخدام مهام Tokio وقنوات لتوزيع الطلبات والإغلاق السلس.
تنفيذ خط أنابيب البيانات
معالجة البيانات المتدفقة باستخدام بث async و buffer_unordered للتحكم في التزامن، مع انتشار مناسب للأخطاء.
تصحيح أخطاء الكود غير المتزامن
تشخيص مشاكل الجمود، وفهم إلغاء المهام، وتنفيذ أدوات تتبع مناسبة لتطبيقات async.
試試這些提示
ساعدني في إعداد تطبيق Tokio async أساسي مع معالجة أخطاء مناسبة. أحتاج إلى جلب البيانات من عدة عناوين URL بشكل متزامن والتعامل مع أي إخفاقات بطريقة مرنة.
أحتاج إلى تنفيذ نمط مجموعة عمال حيث ترسل مهام المنتجين المتعددة عناصر العمل إلى مهام المستهلكين. أرني كيفية استخدام قنوات mpsc مع معالجة إغلاق مناسبة.
يحتاج الخادم غير المتزامن الخاص بي إلى معالجة SIGINT/SIGTERM والإغلاق بشكل نظيف. يجب أن تكتمل جميع الطلبات قيد التنفيذ خلال 30 ثانية قبل الإنهاء القسري. نفذ هذا باستخدام CancellationToken.
أقوم بمعالجة مجموعة بيانات كبيرة كبث. نفذ معالجة مجزأة مع buffer_unordered للحد من التزامن إلى 10 عناصر، مع معالجة أخطاء مناسبة للعناصر الفاشلة.
最佳實務
- استخدم tokio::select! لسباق العمليات المستقبلية وتنفيذ نقاط الإلغاء في المهام طويلة التشغيل
- فضل القنوات على الحالة المشتركة لاتصال المهام لتجنب الجمود وتقليل تنافس القفل
- زود دوال async بسمات tracing واحترم CancellationToken للإغلاق السلس
避免
- حجب كود async باستخدام std::thread::sleep أو عمليات I/O الحاصرة التي تجوع بيئة التشغيل
- الاحتفاظ بالأقفال عبر نقاط await مما قد يسبب جمودًا عندما يتنافس مهام متعددة على نفس الأقفال
- إنشاء مهام غير محدودة بدون semaphores أو حدود JoinSet مما يؤدي إلى استنفاد الموارد