Nói rằng tôi có chương trình c sau:làm thế nào để buộc chương trình ac để chạy trên một lõi riêng
#include <stdio.h>
int main()
{
printf("Hello world \n");
getchar();
return 0;
}
gcc 1.c -o helloworld
và nói rằng tôi có một máy lõi kép:
cat /proc/cpuinfo | grep processor | wc -l
Bây giờ câu hỏi của tôi là , khi chúng tôi thực hiện chương trình, làm cách nào để chúng tôi buộc chương trình này chạy trong lõi-0 (hoặc bất kỳ lõi cụ thể nào khác)?
Làm cách nào để thực hiện điều này theo chương trình? ví dụ, api, tham chiếu mã sẽ hữu ích.
Nếu không có sẵn api thì có bất kỳ thời gian biên dịch, thời gian liên kết, thời gian tải nào để thực hiện việc này không?
OTOH, cách kiểm tra xem chương trình có đang chạy trong lõi-0 hay lõi-1 (hoặc bất kỳ lõi nào khác) không?
Điều này không nằm trong phạm vi C. Bạn phải kiểm tra tài liệu của hệ điều hành để xem liệu hệ điều hành có hiển thị một tính năng như vậy hay không. –
Trong Linux, bạn có thể thiết lập ái lực bằng cách sử dụng taskset, tôi đồng ý với Kerrek rằng đây là câu hỏi hệ thống vận hành –
Trong khi bạn có thể sử dụng taskset để thiết lập mối quan hệ cốt lõi của quá trình khởi chạy sau đó, anh ta yêu cầu api và cách thực hiện nó lập trình – hirschhornsalz