Tạo một đơn lua_State
cho mỗi luồng là giải pháp tốt để có nhiều luồng thực thi Lua. Tuy nhiên, các trạng thái này là cách nhau rất. Đặc biệt, rất khó để giao tiếp một cách an toàn giữa chúng vì API Lua chỉ an toàn cho luồng miễn là mỗi lua_State
được truy cập từ một chuỗi duy nhất tại một thời điểm. (Vâng, trừ khi lua_lock
và lua_unlock
được triển khai như là một mutex phù hợp, mà chúng không có trong bản dựng lõi lua mặc định.)
Nếu mức độ cô lập đó không được chấp nhận, thì bạn cần điều tra một trong số cơ chế cho phép các cá thể Lua chơi tốt với những người khác trong một quy trình luồng.
Lựa chọn ưa thích của tôi là Lua Lanes cung cấp nhiều chủ đề cùng với cơ chế truyền tin nhắn và chia sẻ giá trị giữa chúng theo cách an toàn. Giá trị của hầu hết các loại Lua (bao gồm userdata
với một chút hỗ trợ bên C từ thư viện sử dụng nó) có thể được an toàn và hiệu quả thông qua từ một làn khác.
Các cơ chế khác tồn tại và điểm khởi đầu tốt cho hầu hết trong số đó là ở số wiki page on MultiTaksing của người dùng Lua.