Bài viết này dành riêng cho ai?

Lập trình đồng nhất là một trong chuyên môn lập trình sẵn trung cấp cho. Để gọi được bạn cần phải không còn xa lạ cùng với những API bất đồng nhất nlỗi URLSession, và dễ dãi viết với thực hiện số đông completion handler closures. Nếu các bạn không biết đều sự việc bên trên, bạn có thể nhìn qua như một tài liệu xem thêm, với chớ bắt mình cần gọi không còn vụ việc.

Bạn đang xem: Concurrency là gì

Yếu tố lịch sử

Trong lịch sử vẻ vang cách tân và phát triển laptop, khối lượng quá trình lớn nhất nhưng mà máy tính xách tay có thể giải pháp xử lý vào một đơn vị chức năng thời hạn được ra quyết định vì tốc độ đồng hồ đeo tay của CPU. Để tăng tốc độ CPU với thu nhỏ dại chip bán dẫn, tín đồ ta nỗ lực nén một lượng to những đèn cung cấp dẫn vào vào một diện tích bé dại tuyệt nhất. Tuy nhiên cuộc đua tăng tốc độ cho lõi CPU bị dừng lại vì chưng các giới hạn về Hartware và ánh sáng.Để liên tục tăng speed mang lại CPU, fan ta bắt đầu tìm một phương án khác để tăng tổng hiệu suất của CPU lên, đồng thời tăng công suất tiêu trúc năng lượng điện. Và chiến thuật đó là gửi các lõi rộng vào vào một CPU gắng cho 1 lõi. Việc xử trí được đưa đến những bộ vi xử lý Core thuộc cách xử trí, cho nên vì thế tổng hiệu năng được tăng thêm.Thoạt đầu, Giải pháp nghe có vẻ như rất thú vị tuy vậy sự việc lại nằm ở trong phần mềm. Để tận dụng tối đa được lợi thế xử lý các core trong số ứng dụng thì chưa hẳn là dễ dàng.Trong thừa khđọng, để áp dụng được những core này, chúng ta đề xuất cách xử trí bài toán khởi sinh sản cùng quản lý các thread này một giải pháp bằng tay thủ công. Việc này đích thực khó khăn với hầu hết những lập trình viên, vì việc khẳng định được con số về tối ưu của các thread vào từng yếu tố hoàn cảnh dựa vào cân nặng mua khối hệ thống bây chừ , với Hartware làm việc bên dưới là không còn dễ dàng.

Để cách xử lý vấn đề khó khăn này, cả iOS và OSX đặt ra một biện pháp tiếp cận không giống mang lại Việc giải pháp xử lý đôi khi kia là: Thay do phải khởi tạo những threads một giải pháp thẳng, các ứng dụng chỉ đơn giản và dễ dàng là gửi các task vào những sản phẩm chờ Queue. Còn bài toán khởi tạo ra những thread cụ như thế nào, từng nào thread được đẩy cho hệ thống đưa ra quyết định. Bằng cách để mang đến hệ thống cai quản làm chủ các thread, những vận dụng hoàn toàn có thể dành được một cường độ linch hoạt nhưng giải pháp xử lý cũ không khi nào đạt được. Đồng thời xây dựng viên đạt được một mô hình lập trình sẵn đơn giản mà hiệu quả rộng.

Concurrency là gì?

Xử lý mặt khác - Concurrency - là vấn đề những task được xử trí và một thời gian.

Tại sao tiện ích của chúng ta lại đề nghị giải pháp xử lý đồng thời - Concurrency?

Để giữ mang lại UI luôn luôn trong trạng thái được đáp ứng.Tăng vận tốc cách xử trí, tận dụng tối đa sức khỏe của bản vẽ xây dựng chip nhiều nhân.

Nếu chúng ta cách xử trí một task non-UI nặng nề trên main thread, task này sẽ blochồng lại main thread với app của chúng ta thiết yếu chào đón được những ảnh hưởng của người tiêu dùng nữa.

*

Trong thời điểm này họ bắt buộc gửi những tác vụ nặng trĩu non-UI task sang một thread không giống nhằm giải pháp xử lý, và main thread đã liên tiếp có tác dụng những trách nhiệm không giống trong các số đó gồm trọng trách quan trọng duy nhất là chào đón rất nhiều can hệ của người dùng.

Xem thêm: Xính Lao Nghĩa Là Gì

*

Một số tư tưởng của lập trình đồng thời

Concurrency

Concurrency không chỉ là một trong tư tưởng mang lại thứ bao gồm chip nhiều nhân. Trong gần như trang bị đối kháng nhân, chúng ta vẫn hoàn toàn có thể xử trí được đa luồng phụ thuộc vào nguyên lý time-slicing nhằm gửi ngữ cảnh.

*

Queue

Queue là sản phẩm ngóng các các bước, vận động theo hiệ tượng FIFO, task nào vào trước thì sẽ tiến hành tiến hành trước, task làm sao vào sau cùng sẽ tiến hành thực hiện sau.Có nhị các loại hàng đợi:Serial Queue: là hàng đợi triển khai theo tuần từ bỏ. Trong một thời lăn tay có một task được thực thi. lúc làm sao task này thực thi ngừng thì task khác mới ban đầu.lấy ví dụ tiêu biểu vượt trội của mặt hàng hóng này là Main thread.

*

Concurrent Queue: là hàng chờ triển khai mặt khác. Trong một thời điểm có thể có nhiều task được thực hiện và một lúc. Hệ thống đang tuỳ vào cài đặt bây chừ của khối hệ thống với cấu hình phần cứng thực tiễn để khởi tạo cùng cấp phép các Thread nhằm xử trí những tác vụ.

*

So sánh thân Serial Queue và Concurrent Queue

*

Synchronous với Asynchronous

Đầu vào của các queue là những closure. Các closure này được lưu lại về cách thức tiến hành nó trước khi gửi mang đến một queueCó nhì phương pháp thực hiện của một closure:Nếu task ghi lại là Synchronous thì task này sẽ blochồng lại queue nhưng nó được gọi, ko cho phép queue kia triển khai thêm task như thế nào khác trong thời hạn nó đang hoạt động.Nếu task được ghi lại là Asynchronous thì task này được điện thoại tư vấn với ngay tiếp đến nó trả quyền tinh chỉnh mang lại hàm gọi nó và sản phẩm đợi đang xúc tiến một closure tiếp theo (trường hợp tất cả đủ queue để thực thi).

Mối quan hệ tình dục thân Synchronous, Asynchronous VS Serial Queue, Concurrent Queue

Synchronous, Asynchronous là phương pháp triển khai của 1 task.Serial Queue, Concurrent Queue là đích cho của task kia.

Synchronous, Asynchronous nói cho mình biết là queue ngay hiện tại gồm đề xuất hóng task xong xuôi rồi bắt đầu điện thoại tư vấn task new tốt khôngSerial Queue, Concurrent Queue thì cho mình biết là với queue giờ đây, chúng ta có một thread giỏi nhiều thread. 1 Task được thực hiện 1 cơ hội tốt nhiều task được triển khai đồng thời.

Trường vừa lòng gửi 2 async task vào serial queue

func simpleQueues() { let queue = DispatchQueue(label: "com.bigZero.GCDSamples") queue.async { for i in 0..

*
khi gửi một async task in
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *