Đăng nhập Tài khoản VIP

Đôi lời lưu lý về Concurrency và Parallelism

Mình có một vài lưu ý nhỏ cho mấy anh em sinh viên về Concurrency và Parallelism, anh em cứ bám theo mấy ý chính này để lấy ý mà học thêm nhé.


  • Concurrency tập trung vào vấn đề tổ chức công việc cần thực thi, có thể thực thi nhiều công việc trong cùng một khoảng thời gian, anh em chú ý chơi chữ "khoảng thời gian", tức là có thể 3s, 5s, 10s chứ không phải cùng một thời điểm và tại một thời điểm chỉ thực hiện 1 công việc. Mình nhấn mạnh khúc này vì nhiều tài liệu đề cập bị luẩn quẩn khúc này hoặc anh em có thể hiểu là nó có thể nhận một số lượng công việc và tự phân chia thời điểm nào chạy công việc nào nhưng tại mỗi thời điểm thì chỉ có một công việc được chạy.


  • Parallelism tập trung vào vấn đề thực thi, các công việc chạy Parallelism sẽ được thực thi ngay và luôn tại cùng 1 thời điểm, ví dụ tại giây thứ nhất 2 công việc cùng được thực thi.


  • Điều kiện để một chương trình chạy Parallelism là CPU >= 2 core


  • Một chương trình chạy Concurrency thì có tận dụng được CPU >= 2 core không ? => Nếu ngôn ngữ đó hỗ trợ đa luồng (java, c#, golang ...) + CPU >= 2 core thì Concurrency có thể enable Parallelism


  • Cách thực thi công việc kiểu Parallelism chắc phải nhanh hơn Concurrency... Cái này không nên vội kết luận nhé, chưa chắc Parallelism nhanh hơn bởi nếu chạy nhiều process cùng một thời điểm mà các process lại có giao tiếp với nhau nữa thì rất có thể sẽ làm chậm chương trình.