Signed-off-by: Haomai Wang <haomaiwang@gmail.com>
Worker *w = workers[conn_id % workers.size()];
AsyncConnectionRef conn = new AsyncConnection(cct, this, &w->center);
conn->connect(addr, type);
- w->center.dispatch_event_external(EventCallbackRef(new C_handle_connect(conn, addr, type)));
assert(!conns.count(addr));
conns[addr] = conn;
conn_id++;
numevents += process_time_events();
{
- Mutex::Locker l(lock);
+ lock.Lock();
while (!external_events.empty()) {
EventCallbackRef e = external_events.front();
external_events.pop_front();
+ lock.Unlock();
e->do_request(0);
+ lock.Lock();
}
+ lock.Unlock();
}
return numevents;
}