boost::corosio::select_context

I/O context using POSIX select() for event multiplexing.

Synopsis

class select_context
    : public basic_io_context

Description

This context provides an execution environment for async operations using the POSIX select() API for I/O event notification. It is available on all POSIX platforms and provides a portable fallback when more efficient platform‐specific APIs (epoll, kqueue) are not available or when explicit portability is desired.

On Linux, both epoll_context and select_context are available, allowing users to choose at runtime:

epoll_context ctx1;   // Use epoll (best performance)
select_context ctx2;  // Use select (portable, useful for testing)

Known Limitations

‐ FD_SETSIZE (~1024) limits maximum concurrent connections ‐ O(n) scanning: rebuilds fd_sets each iteration ‐ Level‐triggered only (no edge‐triggered mode)

Thread Safety

Distinct objects: Safe. Shared objects: Safe, if using a concurrency hint greater than 1.

Example

select_context ctx;
auto ex = ctx.get_executor();
run_async(ex)(my_coroutine());
ctx.run();  // Process all queued work

Base Classes

Name Description

basic_io_context

Base class for I/O context implementations.

Types

Name

Description

executor_type

The executor type for this context.

service

Abstract base class for services owned by an execution context.

Member Functions

Name

Description

select_context [constructor]

Constructors

~select_context [destructor]

Destructor.

operator= [deleted]

Assignment operators

find_service

Return a pointer to the service of type T, or nullptr.

get_executor

Return an executor for this context.

get_frame_allocator

Return the memory resource used for coroutine frame allocation.

has_service

Return true if a service of type T exists.

make_service

Construct and add a service.

poll

Process all ready work items without blocking.

poll_one

Process at most one ready work item without blocking.

restart

Restart the context after being stopped.

run

Process all pending work items.

run_for

Process work items for the specified duration.

run_one

Process at most one pending work item.

run_one_for

Process at most one work item for the specified duration.

run_one_until

Process at most one work item until the specified time.

run_until

Process work items until the specified time.

set_frame_allocator

set_frame_allocator overloads

stop

Signal the context to stop processing.

stopped

Return whether the context has been stopped.

use_service

Return a reference to the service of type T, creating it if needed.

Protected Member Functions

Name

Description

destroy

Destroy all services.

shutdown

Shut down all services.

Protected Data Members

Name

sched_

Created with MrDocs