Я создал новый поток, посвященный циклу запуска libuv. Функция потока выглядит примерно так:
void thread_function()
{
uv_loop_t *loop = uv_loop_new();
uv_ref( loop );
uv_run( loop );
}
Приращение счетчика ref сохраняет поток в реальном времени и в состоянии обрабатывать события libuv. Я надеюсь, что вы сможете завершить цикл выполнения, заставив поток выйти из него, выполнив uv_unref
в основном потоке.
Однако при проверке исходного кода uv_ref
я не видел никакой гарантии, что доступ к переменной контрольного счетчика будет синхронизирован при одновременном доступе. Кроме того, я не видел никаких вызовов доходности, чтобы отказаться от управления операционной системой во время цикла цикла, то есть программа не будет хорошо взаимодействовать с другими процессами.
Это заставляет меня поверить, что я не правильно использую libuv. Если кто-то может объяснить, что я делаю неправильно, это было бы здорово!