介绍了run的Crow会启动一个线程并用于处理do_accept。
那么do_accept本身是做什么的呢?
void Server::do_accept()
{
if (!shutting_down_)
{
uint16_t service_idx = pick_io_service_idx();
asio::io_service& is = *io_service_pool_[service_idx];
task_queue_length_pool_[service_idx]++;
...
}
}
用于根据当前处理任务的数量多少,从io_service池取出一个is,也就相当于是从线程池中取出一个线程(因为每个线程阻塞在一个io_service上)。
然后将增加该线程处理的任务数量。