Việc trao đổi dữ liệu giữa các goroutine trong xử lý đồng thời là rất thường xuyên. Giải quyết vấn đề đó bằng cách sử dụng các biến chung rất hay được áp dụng nhưng đi kèm với nó là xử lý xung đột như đã thấy ở bài trước. Go cung cấp một cơ chế trao đổi khác giúp cho việc trao đổi dữ liệu giữa các goroutine mượt mà hơn. Đó là kênh (channel).
Giới thiệu các bài viết hướng dẫn lập trình với ngôn ngữ lập trình Go. Những bài viết này được dịch chủ yếu từ cuốn The Go Programing Language của Alan A. A. Donovan và Brian W. Kernighan và tham khảo một số sách khác như Go In Action, Build Web Application with Golang và nhiều tài liệu khác trên mạng. Rất mong nhận được sự đóng góp ý kiến của mọi người.
Wednesday, June 22, 2016
Thursday, June 2, 2016
Bài 21: Xử lý đồng thời trong Go
Thường thì các chương trình thực thi tuần tự các lệnh và các hàm trong main từ đầu đến cuối, lệnh trước xong sẽ đến lệnh sau cho đến khi kết thúc hàm main. Nếu có thể nên xây dựng chương trình theo hướng như vậy, vì đó là cách tạo chương trình đơn giản và dễ quản lý nhất. Tuy vậy, trong nhiều điều kiện, việc xử lý được nhiều tác vụ đồng thời là yêu cầu bắt buộc để đảm bảo chương trình hoạt động hiệu quả. Ví dụ dễ thấy nhất là khi xây dựng ứng dụng web. Tại cùng một thời điểm, ứng dụng web có thể nhận và xử lý nhiều yêu cầu từ nhiều người dùng khác nhau. Nếu cứ tuần tự thì những người được phục vụ sau sẽ khó mà chờ nổi. Xử lý đồng thời là yêu cầu không thể thiếu trong những tình huống này và Go đã cung cấp một công cụ tuyệt vời cho việc này.
Subscribe to:
Posts (Atom)