Khi các bộ vi xử lý đa nhân ngày càng trở nên phổ biến hơn, tôi nghĩ tôi sẽ quen thuộc với cách viết mã để tận dụng chúng. Tôi là nhà phát triển .NET và không chắc chắn nên bắt đầu từ đâu (nghiêm túc, tôi có không có đầu mối nơi bắt đầu). Bất kỳ đề xuất?Làm thế nào để viết các ứng dụng .NET sử dụng bộ vi xử lý đa lõi
Trả lời
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 đề.
Điều này có thể tạo ra một good starting place.
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.
- Parallel Đội Page: http://msdn.microsoft.com/en-us/concurrency/default.aspx
- mới nhất công bố CTP: http://blogs.msdn.com/somasegar/archive/2008/06/02/june-2008-ctp-parallel-extensions-to-the-net-fx.aspx
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? –
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
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ó.
Đọ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.
"Đọ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! –
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
Tôi không giới thiệu sách thường xuyên hơn nữa, nhưng Joe Duffy's Concurrent Programming on Windows chỉ đơn giản là không thể thay thế.
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.
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.
- 1. Cách cấu trúc ứng dụng C++ để sử dụng bộ xử lý đa lõi
- 2. Python: Xử lý đa lõi?
- 3. Đếm bộ vi xử lý sử dụng C++ trong Windows
- 4. Làm thế nào để viết các ứng dụng xử lý âm thanh C++?
- 5. làm thế nào để sử dụng CPU lõi tứ trong ứng dụng
- 6. Xử lý các ứng dụng thô lỗ trong .NET
- 7. Explicit đa lõi C# ứng dụng
- 8. Làm thế nào để sử dụng đa xử lý với các cá thể lớp trong Python?
- 9. Làm thế nào một ứng dụng có thể sử dụng nhiều lõi hoặc CPU trong .NET hoặc Java?
- 10. Chỉ sử dụng bộ nhớ cao khi đa xử lý
- 11. PicklingError khi sử dụng đa xử lý
- 12. Làm thế nào để sử dụng hàng đợi đa xử lý trong Python?
- 13. Xác định bộ xử lý (lõi) được sử dụng theo chủ đề cụ thể
- 14. Sử dụng các ống đa xử lý python
- 15. Sử dụng mô-đun đa xử lý
- 16. ASP.NET theo mặc định có tận dụng bộ xử lý đa lõi không?
- 17. Bộ hướng dẫn nào được sử dụng bởi bộ vi xử lý Tilera?
- 18. Làm thế nào để bạn sử dụng bộ tiền xử lý để tạo một thư viện đa nền tảng?
- 19. Chia tỷ lệ các ứng dụng đa luồng trên các máy đa lõi
- 20. Độ tin cậy bộ vi xử lý
- 21. Làm thế nào để ngắt trong máy đa lõi/đa CPU hoạt động?
- 22. Hành vi xử lý ngoại lệ trong ứng dụng WinForms, sử dụng hộp thoại phương thức
- 23. Cách tính CPU Sử dụng ứng dụng đa xử lý trong Linux
- 24. Làm thế nào để xử lý null khi sử dụng bộ sưu tập Java loại
- 25. Làm cách nào để viết trình xử lý thoát cho ứng dụng F #?
- 26. Làm thế nào để viết một ứng dụng WinForms lớn?
- 27. Sử dụng chế độ mặc định với đa xử lý?
- 28. Làm thế nào để xử lý các yêu cầu ứng dụng Facebook?
- 29. Làm thế nào để tạo dll trong MATLAB và sử dụng các dll này trong các ứng dụng .Net
- 30. Sử dụng bộ nhớ ứng dụng .NET - bộ nhớ không được sử dụng .NET và bộ nhớ không được quản lý
Để 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? –
Điều đó khá chính xác. –
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ẹ. –