Wednesday, June 22, 2016

Bài 22: Cơ chế truyền dữ liệu giữa các goroutine

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).

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.