2009-03-03 26 views

Trả lời

12

Lập trình đa lõi về bản chất là lập trình đa luồng. Miễn là ứng dụng của bạn đa luồng, hệ điều hành sẽ xác định lõi nào để chạy luồng nào.

Vì vậy, câu hỏi thực sự của bạn nên là, loại ứng dụng nào sẽ được hưởng lợi từ việc đa luồng? Hãy nghĩ về một ứng dụng như vậy, sau đó khởi tạo nhiều luồng để giải quyết các phần bằng nhau của vấn đề.

+0

Để bắt đầu, tôi nghĩ rằng tôi sẽ viết một cái gì đó mà quay ra bốn chủ đề (tôi có một máy quad-core). Mỗi luồng sẽ thực thi một ứng dụng giao diện điều khiển riêng biệt, thực hiện một số phép tính cường độ cao trong một hoặc hai phút (để tăng mức sử dụng CPU). Tôi nên sử dụng mức sử dụng CPU 100% trong trường hợp này, đúng không? –

+0

Điều đó khá chính xác. –

+0

Cảm ơn bạn rất nhiều vì đã giúp đỡ! Tôi có một sự hiểu biết khá tốt về điều này ngay bây giờ. Nó có ý nghĩa rằng chỉ có một số loại ứng dụng sẽ xem xét 4 lõi cần được nhẹ. –

3

Cách tốt nhất để bắt đầu là lấy CTP mới nhất của khung mở rộng song song và bắt đầu cày qua mã mẫu của chúng.

+0

Có thể tiện ích mở rộng song song hơi cao hơn một chút. Không nên ăn xin bắt đầu một chút với luồng thủ công, để hiểu tất cả các vấn đề và tìm hiểu cơ bản? –

+0

Tôi có khuynh hướng nghĩ rằng việc học qua những điều này là tốt hơn (do đó câu trả lời của tôi để tìm kiếm thông tin trên .net 4.0). Về cơ bản bạn dành ít thời gian hơn cho cách bạn móc mọi thứ lên, và nhiều thời gian hơn về cách song song ảnh hưởng đến logic.Và nếu không có nguồn nào có sẵn, bạn có thể nhìn trộm với phản xạ :) – eglasius

1

Hãy tìm thông tin về các .net 4.0. Nó sẽ thêm các cấu trúc khác nhau cho nó.

2

Đọc trên mô hình lập trình không đồng bộ .NET sử dụng. Nghiên cứu mô hình BeginXXX và EnxXXX cho phép các đại biểu thực hiện trong threadpool.

Tất cả các lớp Dòng đều có phương thức BeingXXX, EndXXX (ví dụ: BeginRead, EndRead) cho phép bạn thực hiện IO không đồng bộ. Nếu bạn đang làm việc trên một cái gì đó mà rất nhiều IO dựa bạn sẽ muốn sử dụng các phương pháp này để tăng tính song song.

+0

"Đọc tiếp ..." Tôi lấy nó, bạn có hiểu biết về các mô hình này. Bạn có bất kỳ tài liệu nào để gợi ý tôi bắt đầu không? CẢM ƠN! –

+0

Hãy xem http://msdn.microsoft.com/en-us/magazine/cc163467.aspx Bất cứ điều gì bởi Jeffrey Richter về chủ đề này là một bài đọc tốt. Ngoài ra, tìm kiếm các bài viết của Joe Duffy, chẳng hạn như http://msdn.microsoft.com/en-us/magazine/cc163467.aspx Anh ấy cũng có một cuốn sách hay về đa luồng. – Sean

0

Chỉ cần tách dự án của bạn thành các chủ đề khác nhau để thực hiện một chức năng cụ thể sẽ cho phép bạn tận dụng nhiều lõi. Hệ điều hành xử lý việc lập lịch trình các luồng khác nhau tới lõi bộ vi xử lý có sẵn nhất.

1

Giống như JaredPar, phần mở rộng song song khá tốt. Tôi đã chơi với họ một chút và họ rất dễ sử dụng và thêm hiệu suất.

Các cấu trúc tôi thích rất nhiều là Parallel.ForEach() và PLinq.

Parallel.ForEach tương tự như chức năng ForEach (ủy nhiệm) mà bạn có trong bộ sưu tập DotNet 2.0. Phải mất một đại biểu hành động và chạy nó song song.

Plinq cho phép bạn thực hiện bất kỳ truy vấn LINQ bình thường nào theo kiểu song song bằng cách thêm .AsParallel() vào cuối truy vấn.

Kiểm tra các liên kết Jared được đăng để biết thêm thông tin.

Các vấn đề liên quan