Lập Trình Song Song Là Gì

Sự khác biệt giữa lập trình bên cạnh đó cùng thiết kế tuy nhiên tuy vậy là gì? Tôi đã hỏi google nhưng lại không kiếm thấy bất kể điều gì giúp tôi hiểu được sự biệt lập kia. Quý khách hàng hoàn toàn có thể mang đến tôi một ví dụ cho tất cả hai?

Lúc Này tôi đang tìm thấy lời lý giải này: http://www.linux-mag.com/id/7411 - mà lại "concurrency là một trong những nằm trong tính của cmùi hương trình" vs "xúc tiến tuy nhiên song là một trong những thuộc tính của máy" không đủ đến tôi - tôi vẫn chẳng thể nói đồ vật gi là dòng gì


Nếu chương trình của doanh nghiệp vẫn thực hiện những luồng (thiết kế đồng thời), thì nó ko duy nhất thiết nên được triển khai điều này (triển khai tuy vậy song), bởi vì nó nhờ vào vào câu hỏi máy có thể cách xử trí một vài luồng hay là không.

Bạn đang xem: Lập trình song song là gì

Đây là một ví dụ trực quan tiền. Chủ đề trên máy không tồn tại ren :

-- -- -- / >---- -- -- -- -- ---->>Chủ đề bên trên một đồ vật ren :

------ / >-------------->>Dấu gạch ốp ngang diễn đạt mã thực thi. Như bạn cũng có thể thấy, cả hai các tách bóc ra cùng thực hiện riêng biệt rẽ, nhưng mà lắp thêm có luồng rất có thể thực hiện nhiều phần đơn nhất cùng một thời gian.


Thực hiện tuy nhiên tuy vậy cùng lập trình sẵn tuy nhiên tuy nhiên rất khác nhau. Câu trả lời từ Jon Harrop là chính xác. Nhưng dường như như bao gồm thắc mắc nhầm lẫn thân triển khai tuy vậy tuy nhiên cùng thiết kế tuy nhiên song.
Khả năng tiến hành những luồng tuy nhiên song phụ thuộc vào các thứ rộng là chỉ trang bị. Ví dụ, OCaml (và Python?) Thực thi những luồng mặt khác cơ mà ko tuy vậy tuy vậy vày khóa thế giới mang đến trình thu gom rác rưởi.
Lập trình tuy vậy song chưa hẳn là một tập vừa lòng nhỏ của xây dựng bên cạnh đó, theo blog này ; Quý Khách vấn đáp ko kể đến điều này, các bạn suy nghĩ gì về tuim tía này?
Câu trả lời này xuất sắc mang lại câu hỏi tưởng tượng sự biệt lập giữa tiến hành đồng thời và song tuy vậy, tuy thế không hẳn mang đến thắc mắc thuở đầu của bạn đăng về lập trình .

Lập trình đồng thờiliên quan đến những hoạt động có vẻ như trùng lặp với chủ yếu liên quan tới việc phức hợp phát sinh bởi cái điều hành và kiểm soát không xác định. Các chi phí định lượng tương quan mang lại các công tác mặt khác thường xuyên là cả thông lượng và độ trễ. Các công tác đồng thời thường hay bị buộc ràng IO cơ mà không phải cơ hội nào thì cũng vậy, ví dụ: bộ thu gom rác rến mặt khác hoàn toàn bên trên CPU. Ví dụ sư phạm của một chương trình mặt khác là trình thu thập tài liệu website. Chương trình này khởi sinh sản các trải nghiệm cho các website và đồng ý những đánh giá bên cạnh đó khi công dụng thiết lập xuống gồm sẵn, tích điểm một tập thích hợp các trang đã có truy vấn. Luồng điều khiển là không xác định bởi những ý kiến không duy nhất thiết bắt buộc thừa nhận theo và một sản phẩm từ bỏ mỗi khi lịch trình được chạy. Đặc tính này rất có thể khiến cho nó vô cùng khó nhằm gỡ lỗi những công tác đồng thời.Erlang , quy trình thao tác ko đồng điệu F # và thỏng viện Akka của Scala có lẽ là các phương pháp tiếp cận tiềm ẩn nhất nhằm thiết kế bên cạnh đó cao.

Lập trình đa điểmlà 1 trong trường thích hợp đặc biệt của lập trình sẵn song tuy nhiên. Lập trình tuy vậy song liên quan cho các chuyển động được ông xã chéo cánh cho mục tiêu ví dụ là nâng cao thông lượng. Những khó khăn của lập trình mặt khác được tránh bằng cách xác định luồng tinh chỉnh. Đôi khi, các lịch trình hiện ra những tập đúng theo những tác vụ nhỏ chạy tuy vậy song và tác vụ phụ thân chỉ liên tục sau khoản thời gian rất nhiều nhiệm vụ nhỏ xong xuôi. Vấn đề này có tác dụng cho các lịch trình tuy vậy song dễ dàng gỡ lỗi hơn những đối với các công tác đồng thời. Phần cạnh tranh của lập trình tuy nhiên tuy nhiên là về tối ưu hóa công suất liên quan đến các sự việc nhỏng độ cụ thể cùng giao tiếp. Cái sau vẫn là 1 trong vấn đề vào bối cảnh đa lõi vì bao gồm một chi phí đáng chú ý tương quan đến việc chuyển tài liệu trường đoản cú bộ đệm này lịch sự cỗ đệm không giống.Cilk có lẽ là cách tiếp cận có tương lai duy nhất để thiết kế tuy vậy song tính năng nhích cao hơn đa lõi cùng nó đã có vận dụng trong cả Khối tạo ra luồng của Intel với Thỏng viện tuy vậy tuy vậy tác vụ của Microsoft (trong .NET 4).


"Phần khó của thiết kế song song ... nlỗi độ cụ thể và tiếp xúc." Nếu các trách nhiệm tuy vậy tuy vậy buộc phải giao tiếp, không khiến cho chúng đồng thời?
"Nếu các trách nhiệm tuy vậy tuy nhiên buộc phải giao tiếp, không tạo nên chúng đồng thời?". Wow, câu hỏi tuyệt vời! Không nhất thiết, không. Các siêu máy tính hay được thiết kế cùng với những chuyển động tuy vậy song một loạt theo sau là phân phối lại tài liệu trái đất với tuy vậy tuy vậy nhiều hơn thế. Vì vậy, gồm sự tuy vậy tuy nhiên cùng tiếp xúc nhưng lại không tồn tại sự tương ttinh quái đích thực nhằm nói tới. Trong bối cảnh này, tôi đã cân nhắc nhiều hơn thế nữa về tuy vậy tuy nhiên đa lõi trong số ấy giao tiếp tức là độ phức hợp của cục đệm, ví dụ: giao tiếp cần thiết cho việc kết hợp bộ đệm. Mặc dù đó là đồng thời nhưng lại nó cũng cấp thiết nhận thấy trực tiếp.
BoppityBop Chỉ vị tôi nói theo cách khác trong bạn dạng vẽ đều gì anh ấy nói trong một cuốn tiểu ttiết không tạo cho câu trả lời của tôi không nhiều đúng hơn. Chỉ đọc dễ dàng rộng cho tất cả những người thực thụ lừng khừng câu vấn đáp. Mà tôi đoán thù là điểm đến lựa chọn đây. Quý khách hàng hoàn toàn có thể viết một cuốn nắn sách bằng ngôn từ được sử dụng vày bài đăng này, nhưng điều đó đã trọn vẹn tạo cười cợt đến phần đông tín đồ gọi, bởi vì chắc hẳn rằng bạn dường như không google câu hỏi này nếu như khách hàng sẽ biết một phần hai đầy đủ gì jon sẽ viết.
— Tor Valamo
18
Bức ttrẻ ranh khôn cùng hữu ích mang đến tôi, một người tương đối new với chủ đề này cùng mô tả từ bỏ
JonHarrop hết sức có ích với tôi, một fan Review cao chính xác, trong cả Khi chuyên môn, ngôn ngữ. Cả nhị câu vấn đáp đóng góp phần vào sự hiểu biết không thiếu rộng của tớ. Tất cả bọn họ phần lớn thắng! (mặc dù tôi đánh giá cao sự khác hoàn toàn được triển khai thân triển khai song tuy nhiên với xây dựng song song)
"Erlang chắc hẳn rằng là ngôn từ tới đây có tương lai độc nhất vô nhị ...". Lựa lựa chọn tự độc đáo, do Erlang ~ 30 tuổi và được mngơi nghỉ nguồn vào khoảng thời gian 1998.

Đồng thời = Hai hàng hóng với một thứ pha cafe.

Parallel = Hai hàng ngóng và nhị vật dụng trộn coffe.

*


Không đúng chuẩn với xô lệch. Đồng thời = cho phép một hoặc những mặt hàng chờ (yếu tắc ko xác định). Parallel = có nhiều rộng một sản phẩm chờ để làm cho bất kỳ hàng làm sao ngắn hơn mặt hàng ngóng lúc đầu còn nếu như không trống (hiệu quả tiệm cận).
Mã đôi khi đề nghị nhì hoặc những bộ xử lý (hoặc "thứ pha cà phê"). Do đó, câu vấn đáp này về cơ bạn dạng là không nên.
GeoffreyAnderson Không, không. lấy ví dụ, các luồng với các các bước được triển khai đồng thời bên trên một sản phẩm công nghệ lõi solo.
FrankHB - Vui lòng xem stackoverflow.com/a/57223044/1406510 với coi links nguồn - trên website của Oracle - Vì vậy, thiết yếu không nên tuy nhiên sự phát âm biết của Shop chúng tôi rất có thể. Vì vậy, thời gian nhằm Để ý đến lại. Tôi đã thay đổi quan điểm của mình sau thời điểm đọc nó.
GeoffreyAnderson - Xin hãy xem stackoverflow.com/a/57223044/1406510. Nó cất links trường đoản cú công ty tiên tri và nêu rõ đều gì là các thứ. Vì vậy, rất cần phải link bản thân với nó.

Giải ưng ý thắc mắc ban đầu là tính toán tuy vậy song / bên cạnh đó rứa vày lập trình .

Trong tính toán thù đôi khi nhị tính toán cả nhị tiến chủ quyền với nhau. Tính toán sản phẩm hai chưa hẳn đợi cho tới Khi kết thúc lần trước tiên để nó phát lên. Tuy nhiên, nó ko nêu rõ chế độ đạt được điều này. Trong tùy chỉnh cấu hình đối kháng lõi, đình chỉ cùng đan xen thân các chủ đề được từng trải (giỏi có cách gọi khác là pre-emptive đa luồng).

Trong tính toán tuy vậy tuy vậy hai tính toán thù cả nhì phát lên đồng thời - đó là nghĩa Black cùng một dịp. Như vậy là chẳng thể cùng với CPU đối chọi với trải đời thiết lập cấu hình nhiều lõi thay thế sửa chữa.

Bức Ảnh trường đoản cú bài viết: "Song tuy vậy với đồng thời trong Node.js"

*
đấu cùng với
*


Trong cơ chế coi từ Chip xử lý, Nó hoàn toàn có thể được mô tả bằng hình hình ảnh này

*

Trong cơ chế coi trường đoản cú Chip xử lý, Nó rất có thể được trình bày bởi hình hình ảnh này


Tôi tin rằng lập trình sẵn đồng thời đề cùa đến xây dựng nhiều luồng, đó là về vấn đề được cho phép lịch trình của khách hàng chạy các luồng, được trừu tượng hóa trường đoản cú các cụ thể Hartware.

Lập trình song tuy nhiên đề cùa đến vấn đề xây cất cụ thể những thuật toán thù lịch trình của chúng ta để tận dụng tối đa Việc tiến hành tuy nhiên song có sẵn. lấy một ví dụ, chúng ta cũng có thể xúc tiến tuy vậy song nhì nhánh của một số thuật toán với hi vọng rằng nó đã đạt hiệu quả mau chóng rộng (trung bình) so với trước nếu như bạn kiểm tra lần trước tiên sau đó là nhánh sản phẩm công nghệ hai.


Nói bí quyết không giống, tiến hành tuy vậy tuy vậy nhì bài toán hoàn toàn có thể khiến bọn chúng ngừng nhanh hao gấp hai. Thực hiện tại mặt khác nhì vấn đề vẫn có thể mất và một khoảng thời hạn nlỗi thực hiện lần thứ nhất và sau đó nếu như chỉ tất cả một đợt cắt CPU hỗ tương giữa việc chạy một ít của lần thứ nhất và tiếp nối là 1 trong những chút ít của lần lắp thêm nhì, v.v.

Tôi kiếm tìm thấy ngôn từ này trong một số trong những blog. Nghĩ rằng nó hữu ích với tất cả liên quan.

Đồng thời và tuy vậy song KHÔNG đề xuất là vấn đề tương tự như. Hai tác vụ T1 và T2 bên cạnh đó trường hợp máy tự nhị tác vụ được triển khai đúng vào lúc không được khẳng định trước,

T1 có thể được thực thi cùng xong xuôi trước T2, T2 có thể được thực thi và xong trước khi T1, T1 cùng T2 có thể được xúc tiến đôi khi tại và một thời gian (tuy nhiên song), T1 cùng T2 hoàn toàn có thể được thực thi sửa chữa thay thế, ... Nếu hai luồng bên cạnh đó được hệ điều hành lên định kỳ nhằm điều khiển xe trên một bộ xử lý không phải CMPhường đơn lõi, bạn có thể nhận thấy sự tương toắt con mà lại không tuy nhiên tuy nhiên. Có thể song tuy vậy bên trên những hệ thống nhiều lõi, nhiều bộ xử lý hoặc phân tán.

Đồng thời hay được điện thoại tư vấn là một trong những gia sản của một lịch trình, với là một trong định nghĩa tổng quát hơn đối với tuy vậy tuy nhiên.

Xem thêm: Windows Mixed Reality Là Gì, Xem Thông Tin Về Windows Mixed Reality


Chúng là nhị cụm trường đoản cú biểu hiện và một điều tự các quan điểm khác nhau (cực kỳ nhẹ). Lập trình tuy nhiên song là biểu hiện tình huống theo cách nhìn của phần cứng - tất cả ít nhất hai CPU (rất có thể trong một gói vật lý) chuyển động tuy nhiên song với 1 vấn đề. Lập trình đôi khi là mô tả nhiều thứ rộng từ bỏ ý kiến của phần mềm - nhì hoặc các hành động rất có thể xảy ra cùng một lúc (đồng thời).

Vấn đề sinh sống đấy là hồ hết fan vẫn cố gắng áp dụng nhì nhiều từ nhằm phân biệt ví dụ Khi không có gì thực thụ sống thọ. Thực tế là đường phân chia mà họ vẫn ráng vẽ vẫn mờ nhạt cùng ko rõ ràng trong không ít thập kỷ, cùng sẽ trngơi nghỉ buộc phải ko ví dụ rộng theo thời gian.

Điều bọn họ sẽ nỗ lực trao đổi là thực tiễn là rất lâu rồi, phần lớn các máy tính xách tay chỉ tất cả một CPU. Lúc chúng ta thực hiện nhiều các bước (hoặc luồng) trên một CPU kia, CPU chỉ thực thụ thực hiện một lệnh từ một trong số luồng đó trên 1 thời điểm. Sự xuất hiện của mặt khác là một ảo hình ảnh - CPU biến đổi giữa những lệnh tiến hành tự những luồng không giống nhau đầy đủ nhanh hao nhằm nhận thức của bé bạn (nhưng mà bất kể thiết bị gì bên dưới 100 ms hoặc trông điều này tức thì lập tức) có vẻ nhỏng nó đã làm cho nhiều việc cùng một thời điểm.

Sự tương phản nghịch cụ thể cùng với vấn đề đó là một máy tính xách tay có rất nhiều CPU hoặc CPU có không ít lõi, vày vậy máy sẽ triển khai các chỉ dẫn từ nhiều luồng cùng / hoặc những các bước cùng một lúc; tiến hành mã một cần yếu / không tồn tại ngẫu nhiên tác động nào đến việc thực thi mã khác.

Bây tiếng vấn đề: một sự sáng tỏ ví dụ như thế sát như không lúc nào trường thọ. Các công ty xây đắp laptop thực thụ tương đối lý tưởng, bởi vậy họ đã nhận được thấy từ rất lâu rằng (ví dụ) khi bạn đề nghị gọi một vài dữ liệu từ một vật dụng I / O nlỗi đĩa, cần mất một thời gian dài (về chu kỳ luân hồi CPU) để xong. Txuất xắc vày nhằm CPU thảnh thơi trong khi điều đó xảy ra, họ vẫn đưa ra nhiều cách thức không giống nhau khiến cho một tiến trình / luồng triển khai một kinh nghiệm I / O và để mã tự một vài các bước / luồng không giống thực hiện trên CPU trong những lúc trải nghiệm I / O ngừng.

Vì vậy, rất rất lâu trước khi CPU đa lõi biến hóa chuẩn chỉnh mực, chúng tôi sẽ tất cả các hoạt động từ khá nhiều luồng xẩy ra tuy nhiên tuy nhiên.

Đó chỉ là phần nổi của tảng băng. Nhiều thập kỷ trước, laptop cũng bắt đầu hỗ trợ một mức độ tuy vậy tuy nhiên khác. Một lần nữa, là những người khá hoàn hảo, những bên xây đắp máy vi tính nhận thấy rằng vào không hề ít trường đúng theo, chúng ta bao gồm những gợi ý ko tác động lẫn nhau, do đó hoàn toàn có thể triển khai nhiều hơn một lệnh trường đoản cú và một luồng. Một ví dụ ban sơ vẫn trnghỉ ngơi bắt buộc tương đối lừng danh là Control Data 6600. Đây là (máy vi tính hơi rộng) là máy vi tính nhanh tuyệt nhất trên trái khu đất Lúc được ra mắt vào năm 1964 - với đa số loài kiến ​​trúc cơ bạn dạng vẫn được thực hiện cho đến thời buổi này. Nó theo dõi và quan sát những tài nguim được thực hiện do mỗi chỉ dẫn và gồm một tập đúng theo những đơn vị triển khai xúc tiến các lệnh ngay trong khi tài ngulặng mà lại chúng dựa vào tất cả sẵn, vô cùng giống với kiến tạo của phần lớn những Chip xử lý Hãng sản xuất Intel / AMD cách đây không lâu.

Nhưng (nhỏng quảng bá thường nói) mong chờ - đó không hẳn là tất cả. Vẫn còn một nhân tố thiết kế không giống nhằm thêm sự nhầm lẫn. Nó được đặt đến không ít thương hiệu khác nhau (ví dụ: "Siêu phân luồng", "SMT", "CMP"), dẫu vậy tất cả bọn chúng các đề cập tới cùng một ý tưởng cơ bản: CPU rất có thể triển khai bên cạnh đó nhiều luồng, sử dụng kết hợp một trong những tài nguyên ổn là độc lập cho từng luồng và một số trong những tài ngulặng được share giữa những luồng. Trong một trường đúng theo nổi bật, điều này được kết hợp với tuy nhiên tuy vậy nút lí giải được nêu sống trên. Để có tác dụng điều đó, Cửa Hàng chúng tôi bao gồm hai (hoặc nhiều) cỗ đăng kchủ kiến ​​trúc. Sau đó, công ty chúng tôi có một cỗ các đơn vị tiến hành rất có thể triển khai các lí giải ngay trong lúc các tài ngulặng cần thiết có sẵn.

Sau đó, tất nhiên, chúng ta đã đạt được các hệ thống hiện đại với nhiều lõi. Tại trên đây rất nhiều đồ vật là hiển nhiên, nên không? Hiện tại Cửa Hàng chúng tôi tất cả những lõi đơn lẻ N (khoảng tầm từ bỏ 2 mang đến 256 hoặc hơn), tất cả hầu như hoàn toàn có thể thực hiện những lệnh cùng một thời gian, vì vậy công ty chúng tôi có ngôi trường vừa lòng tuy nhiên tuy vậy cụ thể - triển khai những lệnh vào một quy trình / luồng không " t tác động đến phía dẫn tiến hành vào 1 phía dẫn không giống.

Vâng, nhiều loại. mặc khi ở chỗ này, họ bao gồm một số trong những tài nguyên ổn độc lập (thanh hao ghi, đơn vị chức năng thực hiện, tối thiểu một nấc bộ đệm) với một số tài nguim được share (thường xuyên là ít nhất là nút thấp nhất của cục đệm, cùng chắc chắn rằng là cỗ tinh chỉnh và điều khiển bộ nhớ và đường dẫn vào bộ nhớ).

Tóm lại: những kịch bản đơn giản dễ dàng nhưng hầu hết tín đồ ước ao tương phản thân những tài nguyên được share cùng tài nguyên độc lập phần nhiều ko bao giờ xẩy ra vào cuộc sống thường ngày thực. Với toàn bộ các tài nguyên được chia sẻ, công ty chúng tôi xong xuôi với 1 đồ vật nhỏng MS-DOS, khu vực Cửa Hàng chúng tôi chỉ rất có thể chạy một chương trình tại một thời điểm và Cửa Hàng chúng tôi đề xuất giới hạn chạy một công tác trước lúc công ty chúng tôi rất có thể chạy chương trình khác. Với tài nguyên ổn trọn vẹn chủ quyền, Cửa Hàng chúng tôi bao gồm N máy tính chạy MS-DOS (thậm chí còn không có mạng nhằm liên kết chúng) mà lại không có tác dụng chia sẻ bất cứ lắp thêm gì thân chúng (vì trường hợp công ty chúng tôi thậm chí hoàn toàn có thể share một tệp, đó là tài nguyên được share, phạm luật những tiền đề cơ bản của không có gì được chia sẻ).

Mỗi ngôi trường hòa hợp thú vị liên quan mang lại một số trong những sự phối kết hợp của các tài nguyên ổn độc lập và tài nguyên ổn được chia sẻ. Mọi máy vi tính văn minh phải chăng (cùng tương đối nhiều máy vi tính hiện đại) đều sở hữu ít nhất một trong những kĩ năng để tiến hành ít nhất một vài vận động chủ quyền bên cạnh đó, và hầu hết phần nhiều trang bị tinh vi rộng MS-DOS đang tận dụng tối đa điều đó ít nhất một cường độ làm sao đó

Sự phân loại rõ ràng, tốt đẹp thân "đồng thời" và "tuy nhiên song" mà đa số tín đồ mong muốn vẽ chỉ không lâu dài cùng gần như ko lúc nào bao gồm. Những gì số đông fan muốn phân một số loại là "đồng thời" thường xuyên vẫn liên quan đến tối thiểu một và thường xuyên là nhiều loại tiến hành tuy nhiên tuy vậy không giống nhau. Những gì họ muốn phân loại là "tuy vậy song" thường xuyên tương quan đến sự việc share tài nguim với (ví dụ) một quá trình ngăn triển khai của tín đồ không giống trong những khi áp dụng tài nguyên ổn được chia sẻ thân hai tài nguyên.

Mọi người đang nỗ lực sáng tỏ rõ ràng giữa "tuy vậy song" cùng "đồng thời" đang sống và làm việc trong một ảo mộng về những cái máy tính chưa bao giờ thực thụ vĩnh cửu.