İyi eşzamanlılık, bir uygulamaya birkaç iş parçacığı atmaktan ve en iyisini ummaktan çok daha fazlasını gerektirir. Bir programın utanç verici bir şekilde saf sıralamaya ne kadar eşzamanlı olarak gidebileceği konusunda bir aralık vardır . Herhangi bir program, bir problemin veya algoritmanın ne kadar ölçeklenebilir olduğunu ifade etmek için Amdahl yasasını kullanabilir . Utanç verici şekilde paralel bir uygulama için birkaç yeterlilik:
- Paylaşılan durum yok, her işlev yalnızca geçirilen parametrelere bağlıdır
- Fiziksel cihazlara erişim yok (grafik kartları, sabit sürücüler, vb.)
Başka nitelikler de var, ancak sadece bu ikisi ile, özellikle oyunların neden birden fazla çekirdekten yararlanmayı düşündüğünüz kadar kolay olmadığını anlayabiliriz. Birincisi, oluşturulacak dünyanın modeli, fizik, hareket, yapay zeka uygulamak vb. Gibi farklı işlevler olarak paylaşılmalıdır. İkincisi, bu oyun modelinin her karesi bir grafik kartı ile ekranda işlenmelidir.
Adil olmak gerekirse, birçok oyun üreticisi üçüncü taraflarca üretilen oyun motorlarını kullanır. Biraz zaman aldı, ancak bu üçüncü taraf oyun motorları eskisinden çok daha paralel.
Etkin eşzamanlılıkla başa çıkmada daha büyük mimari zorluklar var
Eşzamanlılık, arka planda görevleri yürütmekten eşzamanlılık için tam bir mimari desteğe kadar birçok şekilde olabilir. Bazı diller, ERLANG gibi çok güçlü eşzamanlılık özellikleri sunar , ancak uygulamanızı nasıl oluşturduğunuz hakkında çok farklı düşünmenizi gerektirir.
Her programın tam çok çekirdekli desteğin karmaşıklığına gerçekten ihtiyacı yoktur. Bu örneklerden biri vergi yazılımı veya herhangi bir form tabanlı uygulamadır. Zamanınızın çoğu kullanıcının bir şeyler yapmasını beklemek için harcandığında, çok iş parçacıklı uygulamaların karmaşıklığı o kadar da kullanışlı değildir.
Bazı uygulamalar web uygulamaları gibi daha utanç verici bir şekilde paralel bir çözüme sahiptir. Bu durumda, platform utanç verici bir şekilde paralel olarak başlar ve iş parçacığı çekişmesi uygulamak zorunda kalmazsınız.
Alt çizgi:
Birden fazla iş parçacığından (ve dolayısıyla çekirdeklerden) yararlanılmadan tüm uygulamalar gerçekten zarar görmez. Bu şekilde incinenler için, bazen hesaplamalar paralel işlemeye uygun değildir veya koordine etmek için ek yük, uygulamayı daha kırılgan hale getirir. Ne yazık ki, paralel işleme hala iyi olması gerektiği kadar kolay değildir.