@@ -39,15 +39,19 @@ namespace detail {
3939epoll_reactor::epoll_reactor (asio::execution_context& ctx)
4040 : execution_context_service_base<epoll_reactor>(ctx),
4141 scheduler_ (use_service<scheduler>(ctx)),
42- mutex_ (config(ctx).get(" reactor" , " registration_locking" , true )),
42+ mutex_ (config(ctx).get(" reactor" , " registration_locking" , true ),
43+ config (ctx).get(" reactor" , " registration_locking_spin_count" , 0 )),
4344 interrupter_ (),
4445 epoll_fd_ (do_epoll_create()),
4546 timer_fd_ (do_timerfd_create()),
4647 shutdown_ (false ),
4748 io_locking_ (config(ctx).get(" reactor" , " io_locking" , true )),
48- registered_descriptors_mutex_ (mutex_.enabled()),
49+ io_locking_spin_count_ (
50+ config (ctx).get(" reactor" , " io_locking_spin_count" , 0 )),
51+ registered_descriptors_mutex_(mutex_.enabled(), mutex_.spin_count()),
4952 registered_descriptors_(
50- config (ctx).get(" reactor" , " preallocated_io_objects" , 0U ), io_locking_)
53+ config (ctx).get(" reactor" , " preallocated_io_objects" , 0U ),
54+ io_locking_, io_locking_spin_count_)
5155{
5256 // Add the interrupter's descriptor to epoll.
5357 epoll_event ev = { 0 , { 0 } };
@@ -670,7 +674,7 @@ int epoll_reactor::do_timerfd_create()
670674epoll_reactor::descriptor_state* epoll_reactor::allocate_descriptor_state ()
671675{
672676 mutex::scoped_lock descriptors_lock (registered_descriptors_mutex_);
673- return registered_descriptors_.alloc (io_locking_);
677+ return registered_descriptors_.alloc (io_locking_, io_locking_spin_count_ );
674678}
675679
676680void epoll_reactor::free_descriptor_state (epoll_reactor::descriptor_state* s)
@@ -762,9 +766,9 @@ struct epoll_reactor::perform_io_cleanup_on_block_exit
762766 operation* first_op_;
763767};
764768
765- epoll_reactor::descriptor_state::descriptor_state (bool locking)
769+ epoll_reactor::descriptor_state::descriptor_state (bool locking, int spin_count )
766770 : operation(&epoll_reactor::descriptor_state::do_complete),
767- mutex_(locking)
771+ mutex_(locking, spin_count )
768772{
769773}
770774
0 commit comments