Rust'ta eşzamanlılık ve async
Veri yarışını derleme anında engelleyen tür sistemiyle iş parçacıkları, kanallar ve tokio tabanlı async servisler yazarsın.
Seviye 401 · 15 ders · 15 pratik lab
Dersler
İş parçacıkları
- thread::spawn ve move kapanışları
- Send ve Sync: güvenliği tür sistemi nasıl sağlar
- Arc, Mutex ve RwLock
- Kanallar: mpsc ve crossbeam
- rayon ile veri paralelliği
- Atomik türler ve bellek sıralaması
- Kısa görev: dosyaların özetini paralel çıkar
async ve tokio
- async, await ve Future
- tokio çalışma zamanı ve görevler
- tokio ile TCP sunucusu
- select!, zaman aşımı ve iptal
- axum ile JSON API
- Zarif kapanış ve sinyaller
- Kısa görev: hız sınırlı TCP aktarıcısı
Bitirme
- Bitirme görevi: çok istemcili günlük toplama servisi
Pratik lablar
- Unutulan await çağrısını bulmak: Kayıt yazmadığı halde hata vermeyen async fonksiyonda hiç beklenmeyen future'ı derleyici uyarısından bul ve testin kaydı görmesini sağla.
- Kilidi await boyunca tutmamak: std Mutex kilidini await noktasının ötesine taşıyan sayaç hizmetini kilit kapsamını daraltarak düzelt ve eşzamanlı testin takılmadığını göster.
- Diziyi iş parçacıklarıyla toplamak: Bir sayı dizisini dört parçaya bölüp thread::spawn ve move kapanışlarla topla; sonuç tek iş parçacığıyla aynı olsun.
- Paylaşılan hesap defterini korumak: Birden çok iş parçacığının yazdığı bakiye tablosunu Arc<Mutex<..>> ile koru ve eşzamanlı testte bakiye kaybolmasın.
- Send hatasını tasarımla çözmek: Rc kullandığı için iş parçacığına geçirilemeyen bir önbelleği Arc ve RwLock ile yeniden tasarla; okuma yoğun testi geçsin.
- Kanal ile işçi sonuçlarını toplamak: Üç işçinin satır sayısını mpsc kanalıyla ana iş parçacığına gönderdiği kodu tamamla ve toplamı doğrula.
- rayon ile sağlama toplamlarını hızlandırmak: Sıralı dosya sağlama toplamı döngüsünü par_iter ile paralelleştir ve sonucun aynı, sürenin kısa olduğunu göster.
- Atomik istek sayacı ve bellek sırası: Mutex'li sayacı AtomicU64 ile değiştir, doğru Ordering'i seç ve hazır bayrağı ile veri yayınlamayı testle kanıtla.
- Görevleri tokio ile eşzamanlı çalıştırmak: Lab hedeflerine sırayla yapılan üç isteği tokio::join! ile eşzamanlı yap ve toplam sürenin düştüğünü göster.
- select! ile zaman aşımı ve iptal: Yavaş yanıt veren bir hedefe yapılan isteği select! ve sleep ile iki saniyede kes; iptal edilen görev kaynak sızdırmasın.
- Eşzamanlılığı semafor ile sınırlamak: Yüz hedefi denetleyen asenkron aracı aynı anda en fazla on bağlantı açacak şekilde Semaphore ile sınırla.
- Olay döngüsünü kilitleyen kodu bulmak: Asenkron sunucuda yanıtları geciktiren senkron dosya okumasını bul ve spawn_blocking ya da tokio::fs ile düzelt.
- axum ile sağlık uç noktası: Bir axum uygulamasına sürüm ve çalışma süresini JSON olarak dönen /health uç noktası ekle ve testle doğrula.
- axum isteğinde gövde doğrulamak: Bir kayıt uç noktasında JSON gövdesini boyut sınırı ve alan kontrolleriyle doğrula; hatalı isteklere 400 ve açıklama dön.
- Sinyalde düzgün kapanan sunucu: SIGTERM gelince yeni bağlantıları reddedip süren istekleri bitiren ve sonra çıkan bir tokio sunucusu yaz.
Kurs hakkında
Veri yarışını derleme anında engelleyen tür sistemiyle iş parçacıkları, kanallar ve tokio tabanlı async servisler yazarsın.
Ne öğreneceksin
- İş parçacıkları
- async ve tokio
- Bitirme
Ön koşullar
Aynı yolun 301 düzeyine kadar olan konularını uygulamış olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 401 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.