/
usr
/
include
/
boost
/
asio
/
detail
/
impl
/
/usr/include/boost/asio/detail/impl
mkdir
upload
Name
Size
Mode
Actions
buffer_sequence_adapter.ipp
3096
0644
edit
dl
rm
descriptor_ops.ipp
15091
0644
edit
dl
rm
dev_poll_reactor.hpp
2587
0644
edit
dl
rm
dev_poll_reactor.ipp
13138
0644
edit
dl
rm
epoll_reactor.hpp
2439
0644
edit
dl
rm
epoll_reactor.ipp
22372
0644
edit
dl
rm
eventfd_select_interrupter.ipp
4598
0644
edit
dl
rm
handler_tracking.ipp
11782
0644
edit
dl
rm
kqueue_reactor.hpp
2590
0644
edit
dl
rm
kqueue_reactor.ipp
17045
0644
edit
dl
rm
null_event.ipp
1906
0644
edit
dl
rm
pipe_select_interrupter.ipp
3176
0644
edit
dl
rm
posix_event.ipp
1776
0644
edit
dl
rm
posix_mutex.ipp
1235
0644
edit
dl
rm
posix_thread.ipp
1964
0644
edit
dl
rm
posix_tss_ptr.ipp
1261
0644
edit
dl
rm
reactive_descriptor_service.ipp
6388
0644
edit
dl
rm
reactive_serial_port_service.ipp
4278
0644
edit
dl
rm
reactive_socket_service_base.ipp
8802
0644
edit
dl
rm
resolver_service_base.ipp
3891
0644
edit
dl
rm
scheduler.ipp
15892
0644
edit
dl
rm
select_reactor.hpp
2985
0644
edit
dl
rm
select_reactor.ipp
9352
0644
edit
dl
rm
service_registry.hpp
2652
0644
edit
dl
rm
service_registry.ipp
5462
0644
edit
dl
rm
signal_set_service.ipp
20376
0644
edit
dl
rm
socket_ops.ipp
113798
0644
edit
dl
rm
socket_select_interrupter.ipp
5858
0644
edit
dl
rm
strand_executor_service.hpp
11570
0644
edit
dl
rm
strand_executor_service.ipp
3637
0644
edit
dl
rm
strand_service.hpp
3574
0644
edit
dl
rm
strand_service.ipp
5037
0644
edit
dl
rm
throw_error.ipp
1268
0644
edit
dl
rm
timer_queue_ptime.ipp
2410
0644
edit
dl
rm
timer_queue_set.ipp
2317
0644
edit
dl
rm
winrt_ssocket_service_base.ipp
17513
0644
edit
dl
rm
winrt_timer_scheduler.hpp
2664
0644
edit
dl
rm
winrt_timer_scheduler.ipp
2962
0644
edit
dl
rm
winsock_init.ipp
2050
0644
edit
dl
rm
win_event.ipp
2068
0644
edit
dl
rm
win_iocp_handle_service.ipp
14394
0644
edit
dl
rm
win_iocp_io_context.hpp
3026
0644
edit
dl
rm
win_iocp_io_context.ipp
16634
0644
edit
dl
rm
win_iocp_serial_port_service.ipp
6021
0644
edit
dl
rm
win_iocp_socket_service_base.ipp
25041
0644
edit
dl
rm
win_mutex.ipp
2213
0644
edit
dl
rm
win_object_handle_service.ipp
12495
0644
edit
dl
rm
win_static_mutex.ipp
3636
0644
edit
dl
rm
win_thread.ipp
4102
0644
edit
dl
rm
win_tss_ptr.ipp
1448
0644
edit
dl
rm
Edit:
/usr/include/boost/asio/detail/impl/winrt_timer_scheduler.ipp
(2962B)
// // detail/impl/winrt_timer_scheduler.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #ifndef BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP #define BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP #if defined(_MSC_VER) && (_MSC_VER >= 1200) # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include <boost/asio/detail/config.hpp> #if defined(BOOST_ASIO_WINDOWS_RUNTIME) #include <boost/asio/detail/bind_handler.hpp> #include <boost/asio/detail/winrt_timer_scheduler.hpp> #include <boost/asio/detail/push_options.hpp> namespace boost { namespace asio { namespace detail { winrt_timer_scheduler::winrt_timer_scheduler(execution_context& context) : execution_context_service_base<winrt_timer_scheduler>(context), scheduler_(use_service<scheduler_impl>(context)), mutex_(), event_(), timer_queues_(), thread_(0), stop_thread_(false), shutdown_(false) { thread_ = new boost::asio::detail::thread( bind_handler(&winrt_timer_scheduler::call_run_thread, this)); } winrt_timer_scheduler::~winrt_timer_scheduler() { shutdown(); } void winrt_timer_scheduler::shutdown() { boost::asio::detail::mutex::scoped_lock lock(mutex_); shutdown_ = true; stop_thread_ = true; event_.signal(lock); lock.unlock(); if (thread_) { thread_->join(); delete thread_; thread_ = 0; } op_queue<operation> ops; timer_queues_.get_all_timers(ops); scheduler_.abandon_operations(ops); } void winrt_timer_scheduler::notify_fork(execution_context::fork_event) { } void winrt_timer_scheduler::init_task() { } void winrt_timer_scheduler::run_thread() { boost::asio::detail::mutex::scoped_lock lock(mutex_); while (!stop_thread_) { const long max_wait_duration = 5 * 60 * 1000000; long wait_duration = timer_queues_.wait_duration_usec(max_wait_duration); event_.wait_for_usec(lock, wait_duration); event_.clear(lock); op_queue<operation> ops; timer_queues_.get_ready_timers(ops); if (!ops.empty()) { lock.unlock(); scheduler_.post_deferred_completions(ops); lock.lock(); } } } void winrt_timer_scheduler::call_run_thread(winrt_timer_scheduler* scheduler) { scheduler->run_thread(); } void winrt_timer_scheduler::do_add_timer_queue(timer_queue_base& queue) { mutex::scoped_lock lock(mutex_); timer_queues_.insert(&queue); } void winrt_timer_scheduler::do_remove_timer_queue(timer_queue_base& queue) { mutex::scoped_lock lock(mutex_); timer_queues_.erase(&queue); } } // namespace detail } // namespace asio } // namespace boost #include <boost/asio/detail/pop_options.hpp> #endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) #endif // BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP
Save
cmd:
run