Microsoft .NET 4.0 giới thiệu các "cải tiến song song" mới cho khung công tác của nó. Tôi tự hỏi sự khác biệt giữa việc tạo ra một ứng dụng sử dụng các hàm System.Threading tiêu chuẩn so với các cải tiến song song mới.Luồng song song với Xử lý song song
Trả lời
Có lẽ sự khác biệt quan trọng nhất giữa các phần mở rộng song song và luồng thông thường là luồng điều khiển.
Một chuỗi được tạo bằng cách sử dụng new Thread(...)
hoặc ThreadPool.QueueUserWorkItem
sẽ chấm dứt tại một thời điểm hoàn toàn không xác định. Nếu bạn viết mã này:
ThreadPool.QueueUserWorkItem(() =>
{
Thread.Sleep(1000);
Console.WriteLine("Work Finished");
});
Console.WriteLine("Item Queued");
Văn bản Item Queued
sẽ xuất hiện ngay lập tức, và Work Finished
sẽ được in sau khoảng 1 giây chậm trễ.
Mặt khác, nếu bạn viết một cái gì đó tương tự như sử dụng phần mở rộng song song:
Parallel.For(0, 10, i =>
{
Thread.Sleep(1000);
Console.WriteLine("Test {0}", i);
});
Console.WriteLine("Finished");
Những gì bạn sẽ thấy trong trường hợp này là một sự chậm trễ 1 giây trước khi bất cứ điều gì xảy ra, sau đó một loạt các "Test" thư theo thứ tự ngẫu nhiên và rồi văn bản Finished
.
Nói cách khác, các tác vụ chạy song song không thực sự thay đổi luồng chương trình. Nó sẽ chạy các nhiệm vụ khác nhau trên các luồng khác nhau để chúng có thể được thực thi trên nhiều lõi CPU, để cải thiện thông lượng tổng thể của chương trình, nhưng theo như lập trình viên điển hình, các nhiệm vụ này không thực sự chạy trong nền "như họ sẽ được với một sợi. Bạn không phải thay đổi cấu trúc chương trình của bạn hoặc làm bất cứ điều gì đặc biệt để được thông báo khi công việc hoàn thành. Bạn không có quyền kiểm soát những gì xảy ra bên trong khối song song, nhưng bạn biết rằng khối sẽ không trả lại quyền kiểm soát cho đến khi tất cả các tác vụ song song hoàn tất.
Mặc dù tiện ích mở rộng song song là tuyệt vời cho điều này, nó đề cập đến PX không sử dụng bất cứ điều gì khi bạn thực sự cần để chạy tác vụ ở chế độ nền, chẳng hạn như triển khai lập lịch hoặc giao cho một chuỗi công nhân để giữ một giao diện người dùng đáp ứng. Bạn vẫn cần sử dụng các thành phần hoặc các thành phần không đồng bộ cho các chủ đề đó.
Dưới đây là một channel9 tốt Tôi đã xem một khi trở lại về chủ đề này: http://channel9.msdn.com/posts/philpenn/Parallel-Programming-with-NET-Parallel-Extensions/
Xin chào Adam, liên kết này không hoạt động đối với tôi, nói rằng không tìm thấy trang, bất kỳ liên kết hữu ích nào khác –
Parallel Processing chỉ là một số giao diện ưa thích cho đề tự động tạo ra. Nó dễ dàng hơn để sử dụng phần mở rộng xử lý song song cho hầu hết các nhiệm vụ.
Khuôn khổ song song sử dụng mô hình luồng .NET bên dưới mà lần lượt xây dựng trên mô hình luồng Windows. Tuy nhiên, rất nhiều tối ưu hóa đã được thực hiện trong khuôn khổ chung để làm cho thư viện song song hiệu quả hơn.
This blog có các chi tiết bổ sung.
- 1. ScheduledExecutorService nhiều luồng song song
- 2. Xử lý song song hoặc luồng trong Shell scripting
- 3. Xử lý song song trong linux
- 4. khung xử lý song song trong java
- 5. LinqToSql - Song song - DataContext và song song
- 6. Xử lý tín hiệu trong chương trình song song OpenMP
- 7. tạo phẩm xử lý hình ảnh song song
- 8. Xử lý đồ họa song song trong Haskell
- 9. Thực hiện xử lý song song trong bash?
- 10. Xvfb nhiều màn hình để xử lý song song?
- 11. Xử lý đa Python cho các quy trình song song
- 12. Thực trạng xử lý song song tự động trong Haskell
- 13. xử lý song song đơn giản trong perl
- 14. Xử lý nhiều yêu cầu HTTP song song trong Node.js
- 15. OpenMP - Chạy mã song song bên trong mã song song
- 16. đa luồng (openMP) - có bao nhiêu luồng song song
- 17. quicksort song song trong c
- 18. Repa Không song song
- 19. Giảm song song
- 20. Bộ lặp song song
- 21. chạy song song AsyncTask
- 22. song song javascript
- 23. Android: Chủ đề không chạy song song
- 24. Lặp song song trong C#?
- 25. Song song các bài kiểm tra song song trong Ruby 1.9.3 như thế nào?
- 26. Java: Song song sắp xếp nhanh qua đa luồng
- 27. Song song lồng nhau trong Python
- 28. Song song với "Giảm" trong "MapReduce"
- 29. SqlConnection với lập trình song song
- 30. C# Song song Vs. Hiệu suất mã luồng
cũng khi bạn đợi tác vụ, bạn đợi tất cả các tác vụ con không giống chủ đề. Lỗi handerling là tốt hơn rất nhiều với nhiệm vụ sau đó chủ đề. –