Change += to ++, add queue length decrementation on error

This commit is contained in:
Maxime BELUGUET 2021-11-30 19:22:07 +01:00
parent f8af9eb187
commit 2607bf5791
2 changed files with 7 additions and 4 deletions

View File

@ -407,7 +407,7 @@ namespace crow
do_write_general();
}
queue_length -= 1;
queue_length--;
}
private:

View File

@ -182,7 +182,7 @@ namespace crow
int min_queue_idx = 0;
// TODO improve load balancing
for (uint i = 1; i < task_queue_length_pool_.size(); i += 1)
for (uint16_t i = 1; i < task_queue_length_pool_.size(); i++)
{
if (task_queue_length_pool_[i] < task_queue_length_pool_[min_queue_idx])
min_queue_idx = i;
@ -194,10 +194,12 @@ namespace crow
{
int service_idx = pick_io_service_idx();
asio::io_service& is = *io_service_pool_[service_idx];
task_queue_length_pool_[service_idx]++;
auto p = new Connection<Adaptor, Handler, Middlewares...>(
is, handler_, server_name_, middlewares_,
get_cached_date_str_pool_[service_idx], *task_timer_pool_[service_idx], adaptor_ctx_, task_queue_length_pool_[service_idx]);
task_queue_length_pool_[service_idx] += 1;
acceptor_.async_accept(
p->socket(),
[this, p, &is](boost::system::error_code ec) {
@ -210,6 +212,7 @@ namespace crow
}
else
{
task_queue_length_pool_[service_idx]--;
delete p;
}
do_accept();
@ -221,7 +224,7 @@ namespace crow
std::vector<std::unique_ptr<asio::io_service>> io_service_pool_;
std::vector<detail::task_timer*> task_timer_pool_;
std::vector<std::function<std::string()>> get_cached_date_str_pool_;
std::vector<int> task_queue_length_pool_;
std::vector<std::atomic<uint>> task_queue_length_pool_;
tcp::acceptor acceptor_;
boost::asio::signal_set signals_;
boost::asio::deadline_timer tick_timer_;