Câu hỏi Buộc sử dụng lõi CPU cụ thể trong các chương trình trên Windows 7


Có cách nào để buộc một chương trình chạy trên cpu1 chứ không phải là cpu0 cho rằng tôi biết rằng có ít nhất hai lõi?

Tôi đang biên dịch C ++ bằng mã :: chặn trên Windows 7 x64


4
2017-07-13 23:26


gốc


Tôi nghiêng về phía nói rằng đây là một câu hỏi SO. - rob


Các câu trả lời:


Tôi biết rằng bạn có thể kéo trình quản lý tác vụ lên và tìm ứng dụng đang chạy của bạn. Nhấp chuột phải vào ứng dụng trong trình quản lý tác vụ và chọn Affinity.

enter image description here

Sau đó, bạn có thể chọn bộ xử lý bạn muốn sử dụng.

enter image description here


8
2017-07-13 23:53



Lưu ý rằng tôi không nghĩ rằng đây là một GUARANTEE rằng họ sẽ chỉ chạy trên các lõi được chọn, chỉ có nghĩa đen là một mối quan hệ. Nếu có chủ đề mà Windows cảm thấy nó A: Có thể di chuyển và B: Nên di chuyển, nó C: Sẽ di chuyển chúng. Điều này cũng không giữ cho những thứ khác chạy trên các lõi đó (đó là chủ đề của một câu hỏi lâu dài mà tôi đã mở: /) - Shinrai


Có trong API Windows: SetProcessAffinityMask (). Bạn cũng có thể đặt mối quan hệ quy trình bằng cách sử dụng trình quản lý tác vụ hiển thị ở đây.

Không có nhiều lý do hợp lệ tại sao bạn muốn làm điều đó. Hệ điều hành thường thực hiện tốt công việc lên lịch chương trình trên CPU chính xác.


5
2017-07-13 23:52



Bạn có biết liệu có cách nào để chạy một luồng trên một lõi cụ thể không? Vì GSC Game World đã xác nhận trong một bản cập nhật cho S.T.A.L.K.E.R. rằng họ đã di chuyển việc tính toán các đối tượng chi tiết tới lõi bộ vi xử lý thứ hai và tôi không thể tưởng tượng được rằng họ đã sử dụng một quy trình đầy đủ cho điều đó, một luồng đơn giản sẽ có ý nghĩa hơn. (stalker.filefront.com/file/…) - Felix Dombek
Có SetThreadAffinityMask (), nhưng rất có thể S.T.A.L.K.E.R không sử dụng điều đó. Họ chỉ di chuyển tính toán từ chuỗi logic trò chơi chính của họ và đặt nó vào chủ đề riêng của nó và cho phép hệ điều hành xử lý lập lịch trình luồng trên một CPU khác. - shf301