Khi tôi chạy một chương trình đơn luồng mà tôi đã viết trên lõi tứ của mình, tôi có thể thấy trong Windows Task Manager thực sự tất cả bốn lõi CPU của tôi đều hoạt động nhiều hoặc ít hơn. Một lõi hoạt động tích cực hơn ba phần còn lại, nhưng cũng có hoạt động trên các lõi đó. Không có chương trình nào khác (bao gồm hạt nhân hệ điều hành của khóa học) chạy mà sẽ là chính đáng cho activitiy đó. Và khi tôi đóng chương trình của tôi tất cả hoạt động, tất cả các lõi đều giảm xuống gần bằng không. Tất cả là trái là một chút "tiếng ồn" trên lõi, vì vậy tôi khá chắc chắn tất cả các hoạt động có thể nhìn thấy trực tiếp hoặc gián tiếp (như gọi thói quen hệ thống) từ chương trình của tôi.Có thể chương trình đơn luồng được thực hiện đồng thời trên nhiều lõi CPU không?
Có thể hệ điều hành hoặc lõi cố gắng cân bằng một số mã hoặc thực thi trên tất cả bốn lõi, thậm chí nó không phải là một chương trình đa luồng? Bạn có bất kỳ liên kết nào ghi lại kỹ thuật này không?
Một số thông tin cho chương trình: Đây là ứng dụng giao diện điều khiển được viết bằng Qt, Trình quản lý tác vụ cho biết chỉ có một luồng đang chạy. Có thể Qt sử dụng các luồng, nhưng tôi không sử dụng các tín hiệu hoặc các khe, cũng không phải GUI nào.
Liên kết với Task Manager ảnh chụp màn hình: http://img97.imageshack.us/img97/6403/taskmanager.png
Câu hỏi này là ngôn ngữ thuyết bất khả tri và không gắn với Qt/C++, tôi chỉ muốn biết nếu Windows hoặc Intel làm gì để cân bằng cũng mã duy nhất luồng dữ liệu trên tất cả các lõi. Nếu họ làm, kỹ thuật này hoạt động như thế nào? Tất cả những gì tôi có thể nghĩ là, các thói quen hạt nhân như đọc từ đĩa vv được lên lịch trên tất cả các lõi, nhưng điều này sẽ không cải thiện hiệu suất đáng kể vì mã vẫn phải chạy đồng bộ với các cuộc gọi api hạt nhân.
EDIT
Bạn có biết bất kỳ công cụ để làm một phân tích tốt hơn và/hoặc các chương trình đa luồng đơn hơn người nghèo Windows Task Manager?
có tất nhiên trừ khi bạn đang làm việc với bộ xử lý lượng tử, bạn chỉ có thể có 1 bộ xử lý chạy một chuỗi nhất định tại một điểm nhất định trong thời gian. Tuy nhiên, trong một khoảng thời gian mà chủ đề đơn lẻ có thể được di chuyển sang cpu khác! – ennuikiller
phiên bản cũ hơn của Windows (XP và cũ hơn) KHÔNG cố gắng giữ một quá trình trên cùng một lõi, chúng làm ngược lại điều này theo mặc định. –
Có thể * đối với lịch trình hệ điều hành để di chuyển một proc (chính xác hơn, một luồng) từ lõi này sang lõi khác, nhưng rất khó xảy ra. Tôi không biết Qt, nhưng có vẻ như với tôi một lời giải thích có khả năng hơn là có những chủ đề khác đằng sau hậu trường trong Qt, được lên kế hoạch trên các lõi khác. Hoạt động đó, cộng với hoạt động của hạt nhân và các quá trình khác, hiển thị trên các lõi khác. – Cheeso