Vấn Đề IO Không Đồng Bộ Trong Quy Trình Khởi Động Skynet
Một số bạn đồng nghiệp đã phản ánh với tôi rằng kể từ khi thư viện IO của Skynet được viết lại, hệ thống không thể khởi động được trên nền tảng Mac OSX. Sau khi kiểm tra kỹ lưỡng, nguyên nhân trực tiếp nằm ở phần triển khai kqueue chưa chính xác. Cần lưu ý rằng thiết kế API của kqueue và epoll có những điểm khác biệt quan trọng: epoll cho phép gộp chung sự kiện đọc/ghi trong khi kqueue yêu cầu tách biệt rõ ràng giữa đọc và ghi. Phiên bản mã nguồn này được viết vội mà chưa qua kiểm thử thực tế, nên tồn tại lỗ hổng từ trước, chỉ đến khi gặp vấn đề khác mới bộc lộ rõ.