Nếu trò chơi của bạn sẽ chuyên sâu về phần cứng từ xa thì bạn cần các luồng để đối phó với tất cả các phần cứng hiện đại; CPU tương lai sắp ra mắt trong một hoặc hai năm tới sẽ bắt đầu tạo ra 4 lõi tối thiểu và tối đa 16 lõi cho thị trường đam mê / hiệu năng. Nếu bạn đang thực hiện bất kỳ đa luồng nào, chắc chắn thực hiện một kiến trúc hướng theo nhiệm vụ vì bất kỳ mô hình luồng nào khác vốn đã bị phá vỡ cho các công cụ trò chơi hướng tới.
Bây giờ hãy nhớ rằng "tác vụ" tôi có nghĩa là "công việc" chứ không phải "các luồng riêng biệt cho các hệ thống con động cơ khác nhau." Bạn hoàn toàn không muốn làm một cái gì đó như có một luồng đồ họa, một luồng vật lý, một luồng AI, v.v. Điều đó không vượt quá một số lõi nhỏ và dù sao nó cũng không thực sự mang lại cho bạn bất kỳ sự song song thực sự nào. Vật lý không nên chạy nhiều hơn một bản cập nhật cho mỗi bản cập nhật AI (bạn muốn AI của mình có thể phản ứng với các sự kiện vật lý) và đồ họa gần như không có gì mới để kết xuất nếu vật lý không chạy, do đó, mỗi hệ thống con tự nhiên chạy theo trình tự đặt hàng. Bạn không'
Những gì bạn muốn là làm điều này. Tạo một ống chỉ. Chạy vòng lặp trò chơi của bạn với chuỗi cập nhật hệ thống con cổ điển. Tuy nhiên, đối với mỗi hệ thống con, hãy phân tách khối lượng công việc thành các lô riêng biệt và phân phối chúng cho nhóm luồng. Đợi tất cả các công việc hoàn thành trước khi chạy trạng thái tiếp theo của vòng cập nhật trò chơi. Một số hệ thống con có thể có nhiều trạm biến áp; ví dụ, đồ họa có thể tạo ra một loạt các công việc để loại bỏ và sau đó là một loạt các công việc thứ hai để thực hiện tạo hàng đợi. Cách tiếp cận này tránh được vấn đề đồng bộ hóa của cách tiếp cận đầu tiên, chia tỷ lệ cho số lượng lõi lớn hơn nhiều, và thẳng thắn chỉ là dễ dàng hơn để mã hóa, gỡ lỗi và bảo trì.