我们知道io_service run可以在许多线程中调用,例如:
boost::asio::io_service ss;
std::thread th1([&]() {
ss.run();
});
std::thread th2([&]() {
ss.run();
});
对于uv_run,我们可以像io_service那样吗?
auto loop = uv_default_loop();
std::thread th1([=]() {
uv_run(loop, UV_RUN_DEFAULT);
});
std::thread th2([=]() {
uv_run(loop, UV_RUN_DEFAULT);
});
看来uv_run是无锁的,是否会导致不同的问题处理相同的fd事件? 例如:
tcp fd 42
thread1处理其读取事件
thread2也会处理其读取事件