Ho creato una nuova discussione dedicata a un ciclo di esecuzione di libuv. La funzione di filo simile a questa:Il thread libuv è sicuro?
void thread_function()
{
uv_loop_t *loop = uv_loop_new();
uv_ref(loop);
uv_run(loop);
}
L'arbitro incremento del contatore mantiene il filo vivo e in uno stato di elaborare libuv eventi. Spero di riuscire a far terminare il ciclo di esecuzione, causando così l'uscita del thread, eseguendo uv_unref
sul thread principale.
Tuttavia, durante l'ispezione del codice sorgente uv_ref
non ho visto alcuna garanzia che l'accesso alla variabile del contatore di riferimento sarebbe stato sincronizzato durante l'accesso simultaneo. Inoltre non ho visto alcun richiamo di rendimento per abbandonare il controllo del sistema operativo durante il ciclo di esecuzione, il che significa che il programma non coopererà bene con altri processi.
Questo mi porta a credere che non sto usando libuv nel modo giusto. Se qualcuno potesse spiegare cosa sto sbagliando, sarebbe fantastico!