Jika gim Anda akan menjadi perangkat keras jarak jauh maka Anda perlu utas untuk mengatasi semua perangkat keras modern; CPU di masa depan yang akan keluar dalam satu atau dua tahun mendatang mulai membuat 4 core menjadi minimum dan hingga 16 core umum untuk pasar penggemar / kinerja. Jika Anda melakukan multi-threading sama sekali, pasti lakukan arsitektur berorientasi tugas karena model threading lainnya secara inheren rusak untuk mesin game yang berpandangan ke depan.
Sekarang perlu diingat bahwa dengan "tugas" yang saya maksud "pekerjaan" dan bukan "utas terpisah untuk subsistem mesin yang berbeda." Anda benar-benar benar-benar tidak ingin melakukan sesuatu seperti memiliki satu utas grafik, satu utas fisika, satu utas AI, dll. Itu tidak berskala di luar segelintir inti dan itu sebenarnya tidak memberi Anda paralelisme nyata. Fisika seharusnya tidak menjalankan lebih dari satu pembaruan per pembaruan AI (Anda ingin AI Anda dapat bereaksi terhadap peristiwa fisika), dan grafik hampir tidak ada yang baru untuk dirender jika fisika tidak berjalan, sehingga setiap subsistem secara alami berjalan secara berurutan memesan. Kamu tidak
Yang Anda inginkan adalah melakukan ini. Buat spool utas. Jalankan putaran game Anda dengan urutan klasik pembaruan subsistem. Namun, untuk masing-masing subsistem, pisahkan beban kerja menjadi kumpulan terpisah yang berbeda, dan distribusikan ke kumpulan benang. Tunggu semua pekerjaan diselesaikan sebelum menjalankan status berikutnya dari loop pembaruan game. Beberapa subsistem mungkin memiliki beberapa subtasi; misalnya, gambar dapat mengeluarkan serangkaian pekerjaan untuk melakukan pemusnahan dan kemudian seri kedua pekerjaan untuk melakukan pembuatan antrian. Pendekatan ini menghindari masalah sinkronisasi dari pendekatan pertama, menskala ke jumlah core yang jauh lebih besar, dan terus terang hanya lebih mudah untuk kode, debug, dan pemeliharaan.