Crow:run的流程2 建立io_service及線程-CSDN博客
介紹了run的Crow會(huì)啟動(dòng)一個(gè)線程并用于處理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]++;
...
}
}
用于根據(jù)當(dāng)前處理任務(wù)的數(shù)量多少,從io_service池取出一個(gè)is,也就相當(dāng)于是從線程池中取出一個(gè)線程(因?yàn)槊總€(gè)線程阻塞在一個(gè)io_service上)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-776849.html
然后將增加該線程處理的任務(wù)數(shù)量。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-776849.html
void do_accept()
{
if (!shutting_down_)
{
...
auto p = new Connection<Adaptor, Handler, Middlewares...>(
is, handler_, server_name_, middlewares_
到了這里,關(guān)于Crow:run的流程3 接受http連接請(qǐng)求do_accept的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!