https://youtu.be/x3hOiOcbgeA?t=3725
Tôi cảm thấy về mặt lý thuyết thì vấn đề đã được giải quyết. Những gì tôi từng làm với async/await
trước đây chưa bao giờ cảm thấy hoàn thiện, chưa đủ tốt. Nhưng tôi cảm thấy có một con đường để hiện thực hóa tầm nhìn của mình với hướng đi mới này. Ý tưởng thực ra khá đơn giản, chỉ là đôi khi những ý tưởng đơn giản lại khó nghĩ ra.
Bạn biết trong các chương trình Zig, bạn luôn phải truyền allocator
ở khắp nơi đúng không? Giờ bạn cũng sẽ phải làm vậy với IO. IO là gì? IO là hầu như mọi thứ. Async là một phần của IO. Await là IO.
Đây là một chút tri ân tới ngôn ngữ Go. Về cơ bản nó là async
mà không có await
. Chúng ta cũng có hủy bỏ (cancellation), tôi sẽ nói sau. Rồi còn những thứ như mở file, networking, mutex, điều kiện, timing, và còn nhiều nữa. Tất cả đều liên quan. Bất cứ thứ gì có thể chặn luồng thực thi hiện tại, kể cả các tác vụ CPU lớn, đều thuộc về đây. Điều này có nghĩa là trong các dự án Zig, một trong những vi