Các kế hoạch đang được tiến hành để trang bị ngôn ngữ Swift của Apple với mô hình đồng thời(concurrency model) “hạng nhất“. Mục tiêu là làm cho việc lập trình đồng thời trong Swift hiệu quả, an toàn và thuận tiện, theo lộ trình được công bố tại đây forum.swift.org.

Swift concurrency nhằm ngăn chặn các cuộc chạy đua dữ liệu về trạng thái có thể thay đổi theo mặc định, thông qua việc triển khai các hàm và actors không đồng bộ. Chúng sẽ được giới thiệu trong hai giai đoạn, đầu tiên bằng cách mang lại khả năng tạo các hàm và actors không đồng bộ, sau đó bằng cách thực thi cách ly các actors đó.

Trạng thái của các thay đổi được đề xuất sẽ thực hiện như sau:

  • Loại bỏ các cuộc đua và bế tắc dữ liệu giống như cách Swift loại bỏ sự mất an toàn của bộ nhớ.
  • Làm cho lập trình không đồng bộ trở nên thuận tiện và rõ ràng tại điểm sử dụng của nó.
  • Cung cấp một bộ công cụ và kỹ thuật ngôn ngữ tiêu chuẩn mà các developer có thể tuân theo.
  • Cải thiện hiệu suất của code không đồng bộ thông qua kiến ​​thức tốt hơn tại thời điểm biên dịch.

Việc giới thiệu các tính năng này sẽ kéo dài trong nhiều bản phát hành Swift. Giai đoạn đầu tiên, giới thiệu cú pháp không đồng bộ và các kiểu actors, sẽ cho phép người dùng tổ chức code xung quanh các actors theo cách sẽ giảm chúng nhưng không loại bỏ các kiểu dữ liệu. Giai đoạn thứ hai, sẽ thực thi cách ly các actors, sẽ loại bỏ các cuộc đua về dữ liệu. Nó cũng sẽ cung cấp các tính năng cho phép tương tác hiệu quả, công thái hơn của các actors cần thiết để làm cho việc tách biệt trở nên thực tế.

Các đề xuất cụ thể cho giai đoạn đầu bao gồm:

  • Giới thiệu mô hình async / await dựa trên coroutine cho Swift.
  • API Task và cấu trúc đồng thời,, giới thiệu khái niệm task cho thư viện chuẩn.
  • Actors và actors cô lập, mô tả mô hình actors cung cấp trạng thái cô lập cho các chương trình đồng thời.
  • Khả năng tương tác đồng thời với Objective-C, ngôn ngữ tiền nhiệm của Swift.
  • Trình xử lý không đồng bộ, giới thiệu khả năng khai báo một hàm actors đồng bộ như một trình xử lý không đồng bộ.

Các nguồn kiến thức từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!