Crow:run的流程2 建立io_service及线程-CSDN博客
介绍了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上)。文章来源:https://www.toymoban.com/news/detail-776849.html
然后将增加该线程处理的任务数量。文章来源地址https://www.toymoban.com/news/detail-776849.html
void do_accept()
{
if (!shutting_down_)
{
...
auto p = new Connection<Adaptor, Handler, Middlewares...>(
is, handler_, server_name_, middlewares_
到了这里,关于Crow:run的流程3 接受http连接请求do_accept的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!