Skip to content

Commit

Permalink
Merge pull request zalopay-oss#14 from hypnguyen1209/master
Browse files Browse the repository at this point in the history
Sửa chính tả
  • Loading branch information
anhldbk authored Oct 31, 2021
2 parents 57baec1 + 42f3085 commit 0006f58
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions ch1-basic/ch1-05-concurrency-parallelism.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ Xử lý đồng thời là khả năng phân chia và điều phối nhiều t

>*Concurrency is about **dealing** with lots of things at once-Rob Pike*
Ví dụ như chúng ta vừa muốn nghe nhạc vừa đọc [Advanced Go book](https://zalopay-oss.github.io/go-advanced/) và trong lúc đọc bạn muốn tải bộ tài liệu về từ [zalopay-oss](https://github.com/zalopay-oss/go-advanced). Nếu như theo mô hình xử lý tuần tự thì trìng duyệt web sẽ phải thực hiện việc nghe nhạc xong, rồi tới việc mở [Advanced Go book](https://zalopay-oss.github.io/go-advanced/) online để đọc và sau khi đọc xong chúng ta mới có thể tải về được. Đối với mô hình xử lý đồng thời thì ta có thể làm 3 tác vụ trên trong cùng một khoảng thời gian. Chúng ta có thể vừa nghe nhạc vừa lướt đọc tài liệu mà vừa có thể tải bộ tài liệu này về máy. *Vậy làm thế nào để có thể xử lý đồng thời như vậy ?*
Ví dụ như chúng ta vừa muốn nghe nhạc vừa đọc [Advanced Go book](https://zalopay-oss.github.io/go-advanced/) và trong lúc đọc bạn muốn tải bộ tài liệu về từ [zalopay-oss](https://github.com/zalopay-oss/go-advanced). Nếu như theo mô hình xử lý tuần tự thì trình duyệt web sẽ phải thực hiện việc nghe nhạc xong, rồi tới việc mở [Advanced Go book](https://zalopay-oss.github.io/go-advanced/) online để đọc và sau khi đọc xong chúng ta mới có thể tải về được. Đối với mô hình xử lý đồng thời thì ta có thể làm 3 tác vụ trên trong cùng một khoảng thời gian. Chúng ta có thể vừa nghe nhạc vừa lướt đọc tài liệu mà vừa có thể tải bộ tài liệu này về máy. *Vậy làm thế nào để có thể xử lý đồng thời như vậy ?*

Tất cả các chương trình đang chạy trong máy tính chúng ta chạy đều do hệ điều hành quản lý, với mỗi chương trình đang chạy như vậy được gọi là một `process` (tiến trình) và được cấp một `process id` (PID) để hệ điều hành dễ dàng quản lí. Các tác vụ của tiến trình sẽ được `CPU core` (nhân CPU) của máy tính xử lý. Vậy làm sao 1 máy tính có CPU 1 nhân có thể làm được việc xử lý đồng thời nhiều tác vụ của các tiến trình cùng lúc. Bởi vì bản chất tại một thời điểm nhân CPU chỉ có thể xử lý một tác vụ.

Như câu nói của Rob Pike, ông đã sử dụng từ **dealing** (phân chia xử lý) để nói đến khái niệm concurrency. Thật như vậy, nhân CPU không bao giờ đợi xử lý xong một tác vụ rồi mới xử lý tiếp tác vụ khác, mà nhân CPU đã chia các tác vụ lớn thành các tác vụ nhỏ hơn và sắp xếp xen kẽ lẫn nhau. Nhân CPU xẽ tận dụng thời gian rảnh của tác vụ này để đi làm tác vụ khác, một lúc thì làm tác vụ nhỏ này, một lúc khác thì làm tác vụ nhỏ khác. Như vậy chúng ta sẽ cảm thấy máy tính xử lý nhiều việc cùng lúc tại cùng thời điểm. Nhưng bản chất bên dưới nhân CPU thì nó chỉ có thể thực thi một tác vụ nhỏ trong tác vụ lớn tại thời điểm đó.
Như câu nói của Rob Pike, ông đã sử dụng từ **dealing** (phân chia xử lý) để nói đến khái niệm concurrency. Thật như vậy, nhân CPU không bao giờ đợi xử lý xong một tác vụ rồi mới xử lý tiếp tác vụ khác, mà nhân CPU đã chia các tác vụ lớn thành các tác vụ nhỏ hơn và sắp xếp xen kẽ lẫn nhau. Nhân CPU sẽ tận dụng thời gian rảnh của tác vụ này để đi làm tác vụ khác, một lúc thì làm tác vụ nhỏ này, một lúc khác thì làm tác vụ nhỏ khác. Như vậy chúng ta sẽ cảm thấy máy tính xử lý nhiều việc cùng lúc tại cùng thời điểm. Nhưng bản chất bên dưới nhân CPU thì nó chỉ có thể thực thi một tác vụ nhỏ trong tác vụ lớn tại thời điểm đó.

<div align="center">
<img src="../images/ch1.6-concurrent-process.png">
Expand Down Expand Up @@ -167,4 +167,4 @@ func main() {
](./ch1-06-common-concurrency-mode.md)
* Phần trước: [Functions, Methods và Interfaces
](./ch1-04-func-method-interface.md)
* [Mục lục](../SUMMARY.md)
* [Mục lục](../SUMMARY.md)

0 comments on commit 0006f58

Please sign in to comment.