nói dối e blog

Một Vài Suy Nghĩ Tiếp Nối Về Bộ Lập Lịch Skynet

Bài viết này là phần tiếp nối tự nhiên từ những ý tưởng trước đó của tôi. Gần đây tôi đang ấp ủ ý định xây dựng một bộ lập lịch đa nhiệm N:M mới dựa trên cơ chế ống dẫn thông điệp, dành riêng cho hệ thống client của chúng tôi. Đây là giải pháp được rút ra từ nhiều năm kinh nghiệm vận hành skynet và khắc phục những hạn chế tồn đọng.

Thay Đổi Các Hoạt Động Nguyên Tử Của Skynet Sang Stdatomic

Tôi đã thay thế các thao tác nguyên tử trong skynet bằng thư viện stdatomic. Đây là một phần tiêu chuẩn của C11 và cũng đã được tích hợp vào chuẩn C++. Microsoft Visual C++ cũng sẽ hỗ trợ stdatomic trong tương lai. Khi dự án skynet bắt đầu, tính năng này vẫn chưa tồn tại, vì vậy tôi đã sử dụng các mở rộng sync của GCC từ trước đó.

Khởi Tạo Có Chọn Lọc Cho Bộ Nhớ

Vài ngày trước, trong lúc thảo luận với đồng nghiệp về một vấn đề kỹ thuật, tôi đã thử nghiệm một giải pháp nhỏ.

Câu chuyện bắt đầu từ việc studio tại Thượng Hải của công ty tiến hành kiểm tra áp lực máy chủ cho dự án MMO. Khi nói đến việc tối ưu hiệu suất, chúng tôi tập trung vào các module C được sử dụng trong server. Điều đặc biệt là họ biên dịch cùng một bộ mã C++ (phân biệt bằng namespace) nhiều lần để phục vụ các service khác nhau. Tôi cảm thấy tò mò vì thông thường các module C trong Lua có thể dùng chung cho nhiều máy ảo mà không cần liên kết vật lý nhiều bản. Qua phân tích kỹ hơn, hóa ra mã nguồn này sử dụng một số đối tượng toàn cục (theo mô hình singleton).

Tổ Chức Vật Liệu Trong Hệ Thống Hạt

Trong một hệ thống hạt, việc sử dụng đa dạng các loại vật liệu là điều không thể tránh khỏi. Có hai cách tiếp cận chính: thứ nhất là phân chia các vật liệu khác nhau thành các đối tượng quản lý riêng biệt; thứ hai là tập trung toàn bộ hạt trong cùng một bộ quản lý, đồng thời bổ sung thuộc tính phân loại vật liệu. Mỗi phương pháp đều có những ưu điểm và hạn chế riêng, đòi hỏi sự cân nhắc kỹ lưỡng trong thiết kế kiến trúc hệ thống.

Bọc Lớp Quản Lý Hạt C++

Quản lý hạt trong C++ - Một cách tiếp cận mới

Tiếp nối bài viết trước về thiết kế hệ thống hạt, bài này sẽ trình bày cách tôi đã vật lộn với việc đóng gói hệ thống quản lý hạt bằng C++ trong suốt một đêm dài đầy thử thách.

Sau khi hoàn thành chức năng quản lý hạt bằng C++, tôi không khỏi tự hỏi: Liệu việc đầu tư nhiều thời gian và công sức vào một chức năng nhỏ như vậy có thực sự đáng giá? Việc nhấn mạnh vào an toàn kiểu dữ liệu rõ ràng giúp giảm lỗi trong các đoạn mã liên quan và nâng cao chất lượng code. Tuy nhiên, việc code trở nên phức tạp và khó hiểu hơn lại có thể làm giảm chất lượng tổng thể.

Một Số Phương Pháp Của Lua Binding

Dưới đây là bản viết lại nội dung trên bằng tiếng Việt, được tổ chức lại với cách diễn đạt phong phú hơn và bổ sung thêm một số chi tiết:

Một số phương pháp kết nối Lua trong RmlUi

Trong những ngày qua, tôi đang thực hiện việc xây dựng giao diện Lua cho thư viện RmlUi. Mặc dù thư viện này đã có một bộ kết nối Lua chính thức, nhưng tính năng mới Data Model vẫn chưa được hỗ trợ. Tác giả thừa nhận rằng ông không quá am hiểu về Lua và tính năng này vẫn đang trong quá trình phát triển, nên hiện tại mới chỉ hoàn thiện phần giao diện C++.

0%