Go to file
Damian Jarek 10a56572fc
Fix asio_handler_invoke hook in ASIO example
The previous hook required the Fn to be CopyConstructible, wheras
ASIO 1.66+ permits MoveConstructible-only CompletionHandlers.

Resolves: https://github.com/boostorg/beast/issues/1134

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-05-18 21:05:17 +02:00
build move NUMA to separate library 2018-05-13 09:20:38 +02:00
doc move NUMA to separate library 2018-05-13 09:20:38 +02:00
examples Fix asio_handler_invoke hook in ASIO example 2018-05-18 21:05:17 +02:00
include/boost/fiber move NUMA to separate library 2018-05-13 09:20:38 +02:00
meta fix meta infos 2016-11-22 19:59:10 +01:00
performance move NUMA to separate library 2018-05-13 09:20:38 +02:00
src move NUMA to separate library 2018-05-13 09:20:38 +02:00
test move NUMA to separate library 2018-05-13 09:20:38 +02:00
.gitignore ignore cscope files 2013-01-01 15:29:11 +01:00
.travis.yml Add Mac OS X jobs to Travis 2017-11-08 15:30:20 +02:00
index.html add index.htm 2016-06-07 08:14:02 +02:00
README.md Fix typos in README.md 2016-11-17 14:41:31 +01:00

boost.fiber

boost.fiber provides a framework for micro-/userland-threads (fibers) scheduled cooperatively. The API contains classes and functions to manage and synchronize fibers similiar to boost.thread.

A fiber is able to store the current execution state, including all registers and CPU flags, the instruction pointer, and the stack pointer and later restore this state. The idea is to have multiple execution paths running on a single thread using a sort of cooperative scheduling (threads are preemptively scheduled) - the running fiber decides explicitly when it yields to allow another fiber to run (context switching).

A context switch between threads costs usally thousands of CPU cycles on x86 compared to a fiber switch with less than 100 cycles. A fiber can only run on a single thread at any point in time.

boost.fiber requires C++11!