C ve C++'daki çok sayıda görevi aynı anda gerçekleştirmeye, performans ve duyarlılığı geliştirmesine olanak sağlar. Bununla birlikte, etkili çoklu hazır sistemleri tasarlama, ırk koşulları, ölüler ve veri tutarsızlıkları gibi konulardan kaçınmaları gerekir.Bu makale gerçek dünya örnekleri tarafından desteklenen temel tasarım ilkeleri özetlemektedir.
1. Paylaşılan Data
Hissetmeler arasındaki paylaşılan verileri, senkronizasyon problemlerinin olasılığını azaltır. threadler bağımsız veriler üzerinde çalışırsa, kilit mekanizmaların ihtiyacı azalır, daha iyi performans ve daha basit koda yol açar. Örneğin, bir web sunucusunda birden fazla istekle çalışır, her bir konu, istek verilerini paylaşmadan alır.
2. Proper Synchronization kullanın
Paylaşılan veriler gerekli olduğunda, doğru senkronizasyon veri bütünlüğü sağlar. Teknikler mumyalar, spinlocks ve koşul değişkenleri içerir. Örneğin, bir yapımcı-consumer modeli paylaşılan bir tampona erişmek için bir mutex ve koşul değişkeni kullanır, ırk koşullarını önlemek ve veri tutarlılığını sağlamak.
3. Deadlocks'tan kaçının
Deadlocks, her biri tarafından tutulan kaynaklar için sonsuza kadar beklemekte olduğunda gerçekleşir.Bunu önlemek için, tutarlı bir sırayla kilitler elde edin ve kilit süresi en aza indirmek için bir veritabanı sistemidir.A example is a database system where transactions gain multiple locks; set a katı kilitleme siparişi oluşturmak dairesel bekleme koşullarını önlemek.
4. Scalability için tasarım
Scalable multithreaded uygulamalar, birçok threadin artışları olarak verimli bir şekilde adapte olur.Örneğin, bir sunucu uygulaması, gelen bağlantıları işlemek için bir ip havuzu kullanır, yüksek yük altında performansı korumak için bir iş havuzu kullanır.
5. Appropriate
Atom operasyonları açık kilitleme olmadan paylaşılan değişkenler için işbaşına güvenli güncellemeler sağlar. Örneğin, atomik bir getirmek kullanarak paylaşılan bir karşı artırmayı sağlar ve eki kilitlemeden doğrulanma sağlar.