Konkurensi yang baik membutuhkan lebih dari sekadar melemparkan beberapa utas dalam suatu aplikasi dan berharap yang terbaik. Ada rentang bagaimana program bersamaan dapat berjalan dari paralel memalukan ke berurutan murni. Setiap program yang diberikan dapat menggunakan hukum Amdahl untuk mengungkapkan seberapa scalable suatu masalah atau algoritma. Beberapa kualifikasi untuk aplikasi paralel yang memalukan adalah:
- Tidak ada status bersama, setiap fungsi hanya tergantung pada parameter yang diteruskan
- Tidak ada akses ke perangkat fisik (kartu grafis, hard drive, dll)
Ada kualifikasi lain, tetapi hanya dengan dua ini kita dapat memahami mengapa gim tertentu tidak semudah yang Anda bayangkan untuk memanfaatkan banyak inti. Untuk satu, model dunia yang akan dirender harus dibagikan sebagai fungsi yang berbeda menghitung fisika, gerakan, menerapkan kecerdasan buatan dll. Kedua, setiap bingkai model permainan ini harus ditampilkan di layar dengan kartu grafis.
Agar adil, banyak pembuat game menggunakan mesin game yang diproduksi oleh pihak ketiga. Butuh beberapa saat, tetapi mesin-mesin permainan pihak ketiga ini sekarang jauh lebih sejajar dari sebelumnya.
Ada tantangan arsitektur yang lebih besar dalam berurusan dengan konkurensi efektif
Concurrency dapat mengambil banyak bentuk, dari menjalankan tugas di latar belakang hingga dukungan arsitektur penuh untuk concurrency. Beberapa bahasa memberi Anda fitur konkurensi yang sangat kuat seperti ERLANG , tetapi mengharuskan Anda untuk berpikir sangat berbeda tentang bagaimana Anda membangun aplikasi Anda.
Tidak setiap program benar-benar membutuhkan kompleksitas dukungan multicore penuh. Salah satu contohnya adalah perangkat lunak pajak, atau aplikasi yang didorong oleh formulir. Ketika sebagian besar waktu Anda dihabiskan menunggu pengguna untuk melakukan sesuatu, kompleksitas aplikasi multithreaded tidak begitu berguna.
Beberapa aplikasi memberikan solusi paralel yang lebih memalukan, seperti aplikasi web. Dalam hal ini, platform dimulai paralel memalukan dan terserah Anda tidak harus memaksakan pertengkaran thread.
Garis bawah:
Tidak semua aplikasi benar-benar terluka karena tidak memanfaatkan banyak utas (dan karenanya, inti). Untuk orang-orang yang terluka oleh itu, kadang-kadang perhitungan tidak ramah dengan pemrosesan paralel atau overhead untuk mengoordinasikannya akan membuat aplikasi lebih rapuh. Sayangnya, pemrosesan paralel masih tidak semudah yang seharusnya dilakukan dengan baik.