У меня есть tcp-сервер, который использует libev как цикл события; для новых обслуживаемых сокетов я установил:100% загрузка процессора с libev
ev_io_init(&conn->io, tcp_conn_on_event_cb, conn->fd, EV_READ | EV_WRITE);
, когда новое соединение пришедшее, мой сервер потребляет весь циклы процессора, у меня есть 100% загрузка процессора. моя программа вызывает все время обратного вызова tcp_conn_on_event_cb с revents, установленным в EV_WRITE
static void tcp_conn_on_event_cb(ev_loop_t *loop, ev_io *ev, int revents)
когда я сделать
strace mybinary
я уже это:
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
epoll_wait(4, {{EPOLLOUT, {u32=7, u64=4294967303}}}, 64, 59743) = 1
....
есть решение Ф.О. эта проблема, пожалуйста?
Спасибо. Это помогло мне. Я был за таймерами, вызывая высокий процессор. Но это решило мою проблему. Я установил EVEREAD и EV_WRITE для нового сокета. – sunil
Hi; приветствую вас –