- Lập trình bất đồng bộ và lập trình đa luồng là một tính năng rất quan trọng trong việc lập trình các chương trình lớn và phức tạp hiện nay. Giúp tận dụng tối đa các tài nguyên như CPU, RAM, …, giảm độ trễ của ứng dụng, cải thiện khả năng đáp ứng của ứng dụng.

Khái niệm cơ bản Concurrency, Parallelism and Asynchronous Execution

Concurrent: là thực hiện nhiều phần công việc trong những khoảng thời gian xen kẽ, có thể song song hoặc không song song.

Parallel: nghĩa là thực hiện nhiều công việc song song độc lập nhau

image-44.png

asynchronous là programming model(mô hình lập trình) giúp chạy chương trình non-blocking(thực thi các tác vụ 1 cách đồng thời) – thằng này là concurency – giúp cải thiện hiệu suất của ứng dụng. image-39-1024x153.png

synchronous là tiến trình thực thi các phần công việc 1 cách tuần tự, process sẽ xử lý xong tác vụ hiện tại mới thực hiện các tác vụ tiếp theo. image-41-1024x96.png

Task: .NET framework cung cấp lớp Threading.Tasks để cho phép bạn tạo các tác vụ và chạy code bất đồng bộ, nó sẽ trả về kết quả khi task hoàn thành. Mỗi task được start sẽ được đưa vào Thread Pool. Việc triển khai bất đồng bộ rất dễ dàng, sử dụng các từ khóa ‘async’ và ‘await’. image-35.png

Threads là đơn vị thực thi cơ bản được cấp bởi OS(hệ thống). 1 Application có nhiều processes, mỗi process là 1 thực thi chương trình của application, mỗi process có thể có 1 hoặc nhiều thread

Multiple thread là kỹ thuật xử lý nhiều task vụ cùng 1 lúc – thằng này là parallel

Thread Pooling là một kĩ thuật cho phép bạn sử dụng các thread hiệu quả hơn bằng cách quản lý và phân phối chúng hợp lý, tận dụng tối đa thời gian nhàn rỗi và tăng hiệu suất của chương trình image-36.png

Khi nào chúng cần dùng Task? Mỗi lúc bạn muốn thực thi mọi thứ đồng thời – concurency. Khi nào cần dùng Thread? Khi cần thực thi mọi thứ cùng thời điểm – parallel

Link tham khảo