Nội dung bài viết
Video học lập trình mỗi ngày
Process và thread. Nếu không tin hạn hãy search cụm từ đó trên google, nhan nhản các bài viết giải thích các kiểu mang tính khoa học trừ tượng, đố mà hiểu được, thậm chí tôi cam đoan luôn là chính những người viết đó còn không hiểu được, huống hồ gì tôi và bạn.
Bởi vì hai khái niệm Process và thread là những khái niệm của hệ điều hành và tương đối trừu tượng và khó nắm bắt cụ thể nếu bạn học Node.js rồi thì đã từng nghe nhắc tới. Nhưng rất may mắn cho tôi và các bạn có một tài liệu suy luận và giải thích rất tốt về điều này. Và hãy để tôi giải thích lại một lần nữa, cho tôi và các bạn có thể hiểu một cách rõ ràng hơn. Không tin, đọc tiếp.
Process chính là một ngôi nhà
Để minh hoạ cho bài viết này một cách dễ hiểu, chúng ta sẽ lấy một hình thực dụng trong đời sống đó là ngôi nhà. Vì vậy hãy đặt sự tương tự của chúng ta cho các quy trình (Process) và chuỗi (thread) sử dụng một đối tượng thông thường, và hàng ngày, chính là một ngôi nhà. Một ngôi nhà có nhiều phòng (tắm, bếp, ngủ...) và có những thuộc tính nhất định đó là (diện tích, số lượng phòng ngủ...).
Nếu bạn nhìn nó theo cách đó, ngôi nhà thực sự không chủ động làm bất cứ điều gì của riêng mình - nó là một đối tượng thụ động. Đây là một quá trình hiệu quả. Chúng ta sẽ khám phá điều này ngay sau đây. (Lời tài liệu)
Thread chính là thành viên trong ngôi nhà
Những thành viên trong gia đình chính là những dối tượng tích cực, họ có thể sử dụng phòng tắm, xem ti vi, ngủ, và nấu nướng thuỳ theo sở thích của mỗi người. Chúng ta sẽ sớm thấy những hành vi đó chính là cách các chuỗi (Threads) hoạt động. Và nhắc đến luồng thì chúng ta hay nghe hai khái niệm đó là Single threaded (đơn luồng) và Multi threaded (đa luồng). Vậy hiểu sao về hai khái niệm này, đi tiếp, đừng dừng lại.
Single threaded (đơn luồng)
Nếu ngôi nhà đó mà bạn đang sở hữ, nhưng bạn đang bị FA (cô đơn) và sống một mình thì bạn hiểu điều nay hơn ai hết. Lúc này bạn muốn làm gì bạn muốn và bất cứ khi nào bạn thích, bởi vì không ai khác trong nhà này ngoài bạn. Bạn muốn nhảy với một volume âm nhạc thật to, đi tắm, nấu bếp, nghĩa là một mình bạn không ai làm phiền bạn. Cũng hiểu hôm nay đó là luồng đơn.
Multi threaded (đa luồng)
Bạn vẫn cô đơn trong ngôi nhà đó cho đến khi mọi thứ thay đổi đáng kể khi bạn thêm một người khác vào nhà. Giả sử bạn đã kết hôn, thì vợ or chồng bạn sống ở đó. Lúc này bạn không thể đi vệ sinh trong khi vợ or chồng bạn đang ở trong đó. Và trước khi làm gì đó bạn sẽ phải kiểm tra trước khi làm, ví dụ muốn nấu món mình thích ăn thì cũng phải kiểm tra đối phương có muốn ăn hay không? Và khi sử dụng gì dó cũng phải kiểm tra vợ or chồng bạn có đang xài nó hay không? Hyax tưởng tưởng tiếp đó là khi bạn có một vài đứa trẻ trong ngôi nhà thì có lẽ bạn sẽ không giám nghĩ tiếp.
Process và thread là gì?
Vậy hãy quay lại một lần nữa đẻ chúng ta hiểu Process và thread. Cũng giống như một ngôi nhà, ngôi nhà chiếm một diện tích của thành phố, thì Process cũng chiếm một khoảng bộ nhớ trong CPU. Nếu như có nhiều ngôi nhà thì thành phố cảm thấy chật chội, cũng như có nhiều process thì bộ nhớ trong CPU càng ngày càng thu hẹp lại.
Và threads cũng vậy, muốn truy cập vào bộ nhớ nào mà nó muốn. Cũng giống như các thành viên trong nhà muốn sử dụng phòng tắm, hay phỏng ngủ đều hoàn toạn tự do. Như vậy có hiểu chính xác là "Một tiến trình như một vùng chứa các chủ đề." Hay "Process chứa nhiều thread".
Trong bài tiếp theo chúng ta cũng sẽ nói tới hai thuật ngữ đó là "mutex và Semaphores" nó khác nhau là gì?