Tôi đã tạo một chuỗi mới dành riêng cho vòng lặp chạy libuv. Chức năng chủ đề trông giống như sau:Chủ đề libuv có an toàn không?
void thread_function()
{
uv_loop_t *loop = uv_loop_new();
uv_ref(loop);
uv_run(loop);
}
Tăng truy cập ref giữ cho luồng còn sống và trong trạng thái xử lý sự kiện libuv. Tôi hy vọng sẽ có thể gây ra vòng lặp chạy để kết thúc, do đó gây ra các thread để thoát, bằng cách thực hiện uv_unref
trên chủ đề chính.
Tuy nhiên, khi kiểm tra mã nguồn uv_ref
tôi không thấy bất kỳ đảm bảo nào truy cập vào biến số lượt truy cập tham chiếu sẽ được đồng bộ trong khi truy cập đồng thời. Ngoài ra, tôi không thấy bất kỳ lệnh gọi lợi nhuận nào để từ bỏ quyền kiểm soát đối với hệ điều hành trong vòng lặp chạy, nghĩa là chương trình sẽ không hợp tác tốt với các quy trình khác.
Điều này khiến tôi tin rằng tôi không sử dụng libuv đúng cách. Nếu ai đó có thể giải thích những gì tôi đang làm sai, điều đó thật tuyệt!