tốt, nó thực sự phụ thuộc vào những gì bạn đang phát triển. câu trả lời, tùy thuộc vào những gì bạn đang phát triển, có thể từ "nó không đáng kể" đến "nó hoàn toàn quan trọng và chúng tôi hy vọng mọi người trong nhóm sẽ hiểu rõ và sử dụng các triển khai song song".
đối với hầu hết các trường hợp, một sự hiểu biết vững chắc và sử dụng các khóa, luồng, nhiệm vụ và nhóm nhiệm vụ sẽ là một khởi đầu tốt khi cần phải có sự song song. (thay đổi theo lang / lib)
thêm vào đó là sự khác biệt trong các thiết kế bạn phải thực hiện - đối với đa xử lý không cần thiết, người ta thường phải học một số mô hình lập trình mới hoặc các chiến lược song song. trong trường hợp đó, thời gian để học, để không đủ thời gian để có một sự hiểu biết vững chắc và để cập nhật các chương trình hiện có có thể mất một năm một nhóm (hoặc hơn). một khi bạn đã đạt đến điểm đó, bạn sẽ (hy vọng!) sẽ không giải quyết hoặc tiếp cận các vấn đề / triển khai như bạn làm hôm nay (miễn là bạn chưa thực hiện chuyển đổi đó).
một trở ngại khác là bạn đang tối ưu hóa hiệu quả một chương trình cho một thực thi nhất định. nếu bạn không được dành nhiều thời gian để tối ưu hóa các chương trình, thì bạn thực sự sẽ không được hưởng lợi từ nó nhiều như bạn nên. song song hóa mức cao (hoặc rõ ràng) có thể cải thiện tốc độ nhận được của chương trình của bạn với khá ít nỗ lực và đó là điều mà nhiều đội sẽ làm hôm nay: "Chúng tôi đã song song hóa các phần thực sự rõ ràng của ứng dụng" - trong một số trường hợp thì tốt. lợi ích của việc lấy quả treo thấp và sử dụng song song đơn giản sẽ tương xứng với số lượng lõi? thông thường, khi có hai đến bốn lõi logic nhưng không thường xuyên vượt quá điều đó. trong nhiều trường hợp, đó là một khoản hoàn trả chấp nhận được, với khoản đầu tư thời gian. mô hình song song này được nhiều người giới thiệu để thực hiện việc sử dụng song song tốt.
những gì bạn học được bằng cách sử dụng các mô hình song song tầm thường này sẽ không lý tưởng trong tất cả các kịch bản song song phức tạp; áp dụng hiệu quả các thiết kế song song phức tạp đòi hỏi một sự hiểu biết và cách tiếp cận khác nhau. các mô hình đơn giản này thường được tách ra hoặc có tương tác nhỏ với các thành phần khác của hệ thống. đồng thời, nhiều triển khai của các mô hình tầm thường này không mở rộng tốt cho các hệ thống song song phức tạp hiệu quả - một thiết kế song song phức tạp xấu có thể mất nhiều thời gian để thực hiện như mô hình đơn giản. ill: nó thực thi nhanh gấp đôi so với mô hình luồng đơn, trong khi sử dụng 8 lõi logic trong khi thực thi. hầu hết các ví dụ comon đang sử dụng / tạo quá nhiều luồng và mức độ nhiễu đồng bộ hóa cao. nói chung, điều này được gọi là chậm lại song song. nó khá dễ gặp phải nếu bạn tiếp cận tất cả các vấn đề song song như các vấn đề đơn giản.
vì vậy, giả sử bạn thực sự nên sử dụng đa luồng hiệu quả trong các chương trình của mình (thiểu số, trong khí hậu ngày nay): bạn sẽ cần sử dụng mô hình đơn giản một cách hiệu quả để tìm hiểu mô hình phức tạp và sau đó học lại cách bạn tiếp cận dòng chảy và tương tác của chương trình. mô hình phức tạp là nơi chương trình của bạn cuối cùng sẽ xuất hiện vì đó là nơi có phần cứng ngày nay và là nơi cải tiến vượt trội nhất sẽ được thực hiện.
việc thực hiện các mô hình đơn giản có thể được hình dung như một ngã ba và các mô hình phức tạp hoạt động giống như một hệ sinh thái phức tạp, uh. Tôi nghĩ rằng sự hiểu biết về các mô hình đơn giản, bao gồm khóa chung và phân luồng sẽ sớm hoặc sẽ được mong đợi bởi các nhà phát triển trung gian khi tên miền (nơi bạn phát triển) sử dụng nó. hiểu các mô hình phức tạp ngày nay vẫn còn hơi bất thường (trong hầu hết các lĩnh vực), nhưng tôi nghĩ rằng nhu cầu sẽ tăng khá nhanh. với tư cách là nhà phát triển, phần lớn các chương trình của chúng tôi sẽ hỗ trợ các mô hình này và hầu hết việc sử dụng đều bị bỏ lại khá xa trong việc hiểu và thực hiện các khái niệm này. vì số lượng bộ xử lý logic là một trong những lĩnh vực quan trọng nhất của cải tiến phần cứng, nên nhu cầu cho những người hiểu và có thể thực hiện các hệ thống phức tạp chắc chắn sẽ tăng lên.
cuối cùng, có rất nhiều người nghĩ rằng giải pháp chỉ là "thêm song song". thông thường, tốt hơn là làm cho việc thực hiện hiện tại nhanh hơn. nó dễ dàng hơn nhiều và đơn giản hơn nhiều trong nhiều trường hợp. nhiều chương trình trong tự nhiên chưa bao giờ được tối ưu hóa; một số người chỉ có ấn tượng rằng phiên bản không được tối ưu hóa sẽ bị lu mờ bởi phần cứng một ngày nào đó. cải thiện thiết kế hoặc thuật toán của các chương trình hiện có cũng là một kỹ năng quan trọng nếu hiệu suất là quan trọng - ném nhiều lõi hơn vào các vấn đề không nhất thiết là giải pháp tốt nhất hoặc đơn giản nhất.
Khi nhắm mục tiêu vào các máy tính hiện đại, hầu hết chúng ta, những người cần triển khai các hệ thống song song tốt sẽ không cần phải vượt ra ngoài đa thư viện, khóa, thư viện song song, đáng đọc sách và rất nhiều kinh nghiệm viết và kiểm tra chương trình (về cơ bản, tái cấu trúc đáng kể cách bạn tiếp cận chương trình viết).