Tin mới nhất

Menu

Browsing "Older Posts"

Bài Viết Về Chủ Đề " Concurrency "

Chia Sẻ Khóa Học Làm Việc Với Concurrency Trong Go (Golang) [Khóa 6987 A]

21 tháng 10 2023 / No Comments

Tìm hiểu những ưu điểm và nhược điểm của concurrent programming với ngôn ngữ lập trình Go.

Bạn sẽ học được gì:

  • ✓ Tìm hiểu về những cách khác nhau mà Go giúp concurrent programing trở nên đơn giản.
  • ✓ Hiểu cách hoạt động của concurrency cũng như những ưu điểm và cạm bẫy của nó.
  • ✓ Tìm hiểu cách hoạt động của WaitGroups, Mutexes và channels.
  • ✓ Làm chủ concurrency bằng cách giải quyết các vấn đề khoa học máy tính cổ điển và bằng cách xây dựng một ví dụ thực tế.

Go, hay còn gọi là Golang, nổi tiếng vì làm cho việc xử lý đồng thời trở nên cực kỳ dễ dàng. Để làm cho một chức năng cụ thể chạy đồng thời, tất cả những gì chúng ta phải làm là thêm từ "go" vào function call và nó sẽ chạy ở chế độ nền một cách vui vẻ, dưới dạng GoRoutine. Scheduler tích hợp của Go đảm bảo rằng GoRoutine nhất định sẽ chạy khi cần và hiệu quả nhất có thể.

Tuy nhiên, điều này không có nghĩa là làm việc với concurrency là đơn giản trong Go - thread safe programming cần phải lập kế hoạch cẩn thận và quan trọng nhất là nó yêu cầu các nhà phát triển phải có hiểu biết tuyệt đối vững chắc về cách Go xử lý đồng thời.

Trong standard library, Go cung cấp cho chúng ta một số cách xử lý các phần chạy đồng thời trong chương trình của chúng ta, ngay trong thư viện tiêu chuẩn: sync.WaitGroup, cho phép chúng ta đợi các tác vụ hoàn thành; sync.Mutex, cho phép chúng ta lock và unlock resources để không có hai GoRoutine nào có thể truy cập cùng một vị trí bộ nhớ cùng một lúc; và cuối cùng là Channels, cho phép GoRoutines gửi và nhận dữ liệu đến và đi với nhau.

Cách tiếp cận concurrency của Go khá đơn giản và ít nhiều được tóm tắt câu thần chú này: Đừng giao tiếp bằng cách chia sẻ bộ nhớ; thay vào đó, hãy chia sẻ bộ nhớ bằng cách giao tiếp. Channels là phương tiện mà chúng ta thường chia sẻ bộ nhớ bằng cách giao tiếp.

Trong khóa học này, chúng tôi sẽ đề cập đến việc sử dụng WaitGroups, Mutexes, và Channels và chúng tôi sẽ trình bày chi tiết. Chúng tôi cũng sẽ đề cập đến một số vấn đề cố hữu trong hoạt động đồng thời, bao gồm early program termination và race condition. Ban đầu, chúng ta sẽ hiểu rõ về cách thức hoạt động của những thứ này bằng cách giải quyết một số vấn đề kinh điển trong lĩnh vực khoa học máy tính, bao gồm Dining Philosophers, vấn đề Producer/Consumer và Sleeping Barber. Những vấn đề này là kinh điển vì một lý do: chúng buộc nhà phát triển phải tìm ra cách tiếp cận tốt nhất để làm việc với code chạy đồng thời hoặc song song.

Cuối cùng, chúng ta sẽ kết thúc khóa học với một vấn đề "thực tế" hơn, trong đó chúng ta phải register một customer cho một số loại subscription service và xử lý việc lập hoá đơn, đăng ký và tất cả những điều cần thiết để có được một customer mới và hoạt động. Chúng tôi sẽ làm như vậy một cách tự nhiên nhanh nhất có thể bằng cách chia các nhiệm vụ cần thiết thành các nhiệm vụ nhỏ hơn và để chúng chạy đồng thời.

Khóa học này dành cho ai:

  • ✓ Lập trình viên Go muốn hiểu cách Go hoạt động với concurrent programming.


NHẬN GET EBOOK TRÊN AMAZON THEO YÊU CẦU




Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
Tuyên bố miễn trừ bản quyền:
Trang web này không lưu trữ bất kỳ tệp nào trên máy chủ của nó. Chúng tôi chỉ lập chỉ mục và liên kết đến nội dung được cung cấp bởi các trang web khác. Vui lòng liên hệ với các nhà cung cấp nội dung để xóa nội dung bản quyền nếu có và gửi email cho chúng tôi, chúng tôi sẽ xóa các liên kết hoặc nội dung có liên quan ngay lập tức.