问题 After I'm done with a uv_async_t , I'm supposed to destroy it to avoid any leaks, right? From glancing at the docs, it appears I'm supposed to use uv_close() for this, but it takes a uv_handle_t* , not a uv_async_t* . Furthermore, it looks like casting it (as in uv_close((uv_handle_t *)async, NULL) ) would cause a strict aliasing violation. Is that what I'm supposed to do anyway? 回答1: Yes, you have to cast the uv_async_t* to uv_handle_t* . That's how libuv internally works. All handles share