Tôi có bộ xử lý lõi kép và theo lời giải thích, tôi chỉ có thể sử dụng 2 luồng nhưng thực sự tôi có thể khởi chạy nhiều hơn 2 luồng cùng một lúc:đa luồng trên máy lõi kép?
Đây là bản sao giải thích:
phương pháp hardware_concurrency tĩnh(), được cung cấp bởi lớp boost :: chủ đề, trả về số chủ đề mà có thể thể chất được thực hiện đồng thời dựa trên số cơ bản CPU hoặc CPU lõi. Gọi chức năng này trên máy tính hai lõi thường được sử dụng , giá trị 2 được trả về. Điều này cho phép một phương thức đơn giản để xác định số lượng chủ đề tối đa của luồng mà nên được sử dụng đồng thời bởi một ứng dụng đa luồng nhất định.
hardware_concurrency() phương thức trả về số 2 trong trường hợp của tôi, nhưng chương trình này sử dụng 4 đề cùng lúc:
#include <iostream>
#include <boost\thread.hpp>
using namespace std;
using boost::thread;
using namespace boost::this_thread;
using boost::posix_time::seconds;
void f1()
{
for(int i = 0; i < 10; ++i)
{
cout << i << endl;
sleep(seconds(2));
}
}
void f2()
{
for(int i = 0; i < 10; ++i)
{
cout << i << endl;
sleep(seconds(2));
}
}
int main()
{
// 4 threads are executed on dual core machine (no problem)
thread thr1(f1);
thread thr2(f2);
thread thr3(f1);
thread thr4(f2);
cin.ignore();
return 0;
}
bất cứ ai có thể giải thích hành vi đó?
Bạn có thể làm cho nhiều chủ đề như bạn muốn (lên đến giới hạn), nhưng 2 là (có thể là) số tối ưu, một cho mỗi lõi. Ngoài ra, nó nói "thể chất thực hiện cùng một lúc". Bạn có thể kiếm được nhiều hơn 2, nhưng chúng sẽ không thể chạy cùng một lúc; hệ điều hành sẽ phải ưu tiên những người đang chạy để cho người khác chạy. Ngoài ra, nó nói "nên", không "có thể". –
và tác dụng phụ nào bằng cách sử dụng ví dụ 10 ứng dụng luồng trên máy lõi kép? có tệ hay không? cảm ơn rất nhiều. – codekiddy
Các hiệu ứng phụ (có thể) giới hạn cho ứng dụng của bạn chạy chậm hơn (vì hệ điều hành phải lo lắng về việc cho phép mọi luồng khác có thời gian chạy, trong đó 2, cho phép chạy cả tốc độ liên tục), mặc dù có thể được bù đắp bằng cách có thể làm nhiều hơn "cùng một lúc" (không thực sự cùng một lúc, nhưng độc lập). –