Sự khác nhau giữa thread và process?

  1. các bạn cho mình hỏi sự khác nhau giữa thread và proccess. Do mình đi phỏng vấn ở công ty, người ta hỏi câu này mình không biết trả lời nên nhờ mấy bạn giúp.
  2. thêm 1 câu nữa, khi nào thì thật sự dùng đến thread, mình thấy nếu làm những chương trình (game) nhỏ cần sự lặp đi lặp lại thao tác thì có thể dùng timer để xử lý thay vì thread vậy khi nào thread nên dùng.
    cảm ơn các bạn đã ghé qua!
  1. Đơn giản ngắn gọn nhất thì thread nằm ở mức Application còn Proccess nằm ở mức OS.
    Nếu làm Java thì đọc thêm tài liệu của chính chủ: https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html

  2. Mặc định đã dùng các ngôn ngữ lập trình hỗ trợ thread là bạn đã dùng đến 1 thread chính gọi là MainThread rồi.

  • Khi bạn có những tác vụ không muốn làm ảnh hướng đến MainThread thì bạn sử dụng đến thread khác.
    -> Nói cách khác khi bạn có một tác vụ có thời gian thực thi lớn thì bạn cần đến một thread nữa.
10 Likes

Mình không chắc chắn hiểu sâu và chuẩn vấn đề này.
Theo mình hiểu khi nhắc đến Thread, người ta nhắc vấn đề này ở mức độ programming language. Một số ngôn ngữ hỗ trợ multi thead (multithreading languages) như java, c#, còn một số thì không như PHP.
Multi thead là cùng thời điểm ngôn ngữ hỗ trợ bạn tạo ra các luồng chạy song song để xử lý các công việc cùng thời điểm (tăng performance xử lý - tốn CPU)

Process lại nằm ở mức độ OS, nếu bạn dùng linux, khi gõ lệnh “ps aux” bạn sẽ thấy hiện lên list các process đang chạy của máy. Mỗi process được phân biệt = processID. Nếu không thích process chạy bạn có thể kill {processID} để dừng việc chạy của service.

Nếu ngôn ngữ không hỗ trợ multi threading, điều đó không có nghĩa là ứng dụng của bạn không hỗ trợ các xử lý song song. Thông thường OS sẽ có các app để quản lý và hỗ trợ ứng dụng bạn xử lý các concurrent requests.

2 Likes

Một điều chú ý là thread không thể tác động được tới UI (giao diện) bạn nhé. Để update giao diện trong thread cần phải dùng cơ chế callback (handle)

1 Like

:’( Bạn đang nói đến ngôn ngữ lập trình nào vậy?

Chắc là Java bác ạ :wink:

Java thì default bạn đã chạy trên một thread gọi là Main thread rồi. Sao lại nói không thể tác động đến UI.
Cái mà bạn nói giống như Android vậy. Mà Android nó gọi là MainUIThread. Cũng là thread mà…

E đang gia cát dự mà a? :wink:

Mình cũng cảm thấy khái niệm thread khá mơ hồ, dễ nhầm lẫn. Mình có tìm hiểu qua nhưng mãi vẫn chưa hiểu hết được. Vd như hiện tại theo mình thấy, CPU có thread (vd 4 core x 1 thread), còn khái niệm thread trong application lại khác nữa thì phải. Vì mình thấy CPU có 4 thread ko có nghĩa là application của mình chỉ có thể tạo 4 thread, application có thể tạo ra rất nhiều thread. Rồi còn khái niệm OS Thread nữa, mình ko rõ nó có khác gì CPU Thread ko?

@tuancode Mình thấy cách giải thích của anh này rất đúng, comment ở đây dành cho người đến sau :joy:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?