Computer >> Máy Tính >  >> Lập trình >> C#

Sự khác biệt giữa Foreach và Parallel.Foreach trong C # là gì?

Vòng lặp Foreach trong C # chạy trên một luồng duy nhất và quá trình xử lý diễn ra tuần tự từng cái một. Trong khi đó, vòng lặp Parallel.Foreach trong C # chạy trên nhiều luồng và quá trình xử lý diễn ra theo cách song song. Có nghĩa là nó lặp lại tất cả các mục cùng một lúc mà không cần đợi mục trước đó hoàn thành.

Việc thực thi Parallel.Foreach nhanh hơn ForEach bình thường. Để sử dụng vòng lặp Parallel.ForEach, chúng ta cần nhập không gian tên System.Threading.Tasks.

Ví dụ

 using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; namespace DemoApplication {class Demo {static void Main (string [] args) {var animal =new Danh sách  {"mèo", "chuột", "hươu", "voi", "sư tử", "hổ", "chó", "lợn", "trâu", "thỏ", "ngựa", " báo đốm "," bò "," dê "," cừu "," lừa "," ngựa vằn "," sói "," cáo "," lepoard "," khỉ "," kangaroo "," girafee "," hà mã " }; var stopWatch =Stopwatch.StartNew (); foreach (chuỗi động vật trong động vật) {Console.WriteLine ($ "Fruit Name:{animal}, Thread Id ={Thread.CurrentThread.ManagedThreadId}"); } Console.WriteLine ($ "thời gian thực hiện vòng lặp foreach ={stopWatch.Elapsed.TotalSeconds} giây"); var stopWatch2 =Đồng hồ bấm giờ.StartNew (); Parallel.ForEach (animal, animal => {Console.WriteLine ($ "Fruit Name:{animal}, Thread Id ={Thread.CurrentThread.ManagedThreadId}");}); Console.WriteLine ($ "Thời gian thực hiện vòng lặp foreach song song ={stopWatch2.Elapsed.TotalSeconds} giây"); Console.ReadLine (); }}} 

Đầu ra

Đầu ra của đoạn mã trên là

 Fruit Name:cat, Thread Id =1Fruit Name:rat, Thread Id =1Fruit Name:nai, Thread Id =1Fruit Name:voi, Thread Id =1Fruit Name:lion, Thread Id =1Fruit Name:tiger, Thread Id =1 Tên chủ đề:dog, Id chủ đề =1 Tên tuyển dụng:pig, Id chủ đề =1 Tên tuyển dụng:trâu, Id chủ đề =1 Tên tuyển dụng:thỏ, Id chủ đề =1 Tên tuyển dụng:ngựa, Id chủ đề =1 Tên tuyển dụng:cheetah, Id chủ đề =1Fruit Tên:bò, Id chủ đề =1 fox, Id chủ đề =1 0.0129221 giây Tên:lợn, Thr ead Id =1 Tên tuyển dụng:trâu, Id chủ đề =1 Tên tuyển dụng:dog, Id chủ đề =3 Tên tuyển dụng:cừu, Id chủ đề =3 Tên tuyển dụng:lừa, Id chủ đề =3 Tên tuyển dụng:thỏ, Id chủ đề =1 Tên tuyển dụng:dê, Id chủ đề =5Fruit Name:fox, Thread Id =5Fruit Name:lepoard, Thread Id =5Fruit Name:cow, Thread Id =4Fruit Name:hippo, Thread Id =4Fruit Name:kangaroo, Thread Id =9Fruit Name:girafee, Thread Id =6Fruit Tên:khỉ, Id chủ đề =5 Tên tuyển dụng:ngựa, Id chủ đề =1 Tên tuyển dụng:cheetah, Id chủ đề =1 Tên tuyển dụng:zebra, Id chủ đề =3> 

Từ kết quả trên, chúng ta có thể thấy, Parallel.Foreach thực thi trong các chuỗi khác nhau và mất ít thời gian hơn so với foreach thông thường.