Oliver Kowalke
cb19fe4c41
Update fiber_context.hpp
2015-07-20 19:47:43 +02:00
Nat Goodspeed
3674114094
Merge branch 'develop' of github.com:olk/boost-fiber into develop
2015-07-19 23:11:02 -04:00
Oliver Kowalke
2003e43d87
fix calling fn in future
2015-07-13 19:56:05 +02:00
Oliver Kowalke
e7b1ee131c
add function ready_fibers()
2015-07-03 18:03:14 +02:00
Oliver Kowalke
7c48c18d3d
add return value specification to lambda
2015-06-29 17:13:17 +02:00
Oliver Kowalke
afe7714c61
small formating + fixing for channels
2015-06-28 10:25:05 +02:00
Nat Goodspeed
e290073b98
Make fiber_context::resume() compatible with Boost 1.58.0.
...
In Boost 1.58, execution_context has a resume() member, not an operator()().
Call ctx_.resume() instead of ctx_().
2015-06-26 14:40:16 -04:00
Nat Goodspeed
48f427a4a4
Merge branch 'develop' of github.com:olk/boost-fiber into develop
2015-06-26 10:58:00 -04:00
Oliver Kowalke
8a7d376450
add invoke() in orderr to support calling member fn
2015-06-23 17:56:33 +02:00
Nat Goodspeed
15a17ca35d
Introduce sched_algorithm_with_properties<>::awakened() overload.
...
sched_algorithm_with_properties<> must intercept awakened() calls before
forwarding control to the subclass override. That pretty much requires two
different virtual methods: one for sched_algorithm subclasses WITHOUT
properties, the other for sched_algorithm_with_properties subclasses.
Originally we used a different name (awakened_props()), but that was
bothersome. It makes more sense to use a different awakened() overload
instead, one that passes in the relevant properties object.
Fix examples/priority.cpp accordingly.
Also delegate instantiation of a new properties object to new_properties()
virtual method. Overriding this method allows you to customize allocation,
instead of sched_algorithm_with_properties<> unconditionally putting the new
properties object on the heap. Validate the new_properties() return value.
2015-06-21 22:39:00 -04:00
Oliver Kowalke
dd374f3be4
Revert "fix missng argument package in async()"
...
This reverts commit 47bd514720 .
2015-06-21 19:01:43 +02:00
Oliver Kowalke
47bd514720
fix missng argument package in async()
2015-06-21 11:51:37 +02:00
Oliver Kowalke
5d18cd5a4e
add interruption point after fiber_manager::run()
...
- functions fiber_manager::join()/fiber_manager::yield()/fiber_manager:.wait()/fiber_manager_wait_until()
check for interrption of the current fiber
2015-06-21 10:53:37 +02:00
Oliver Kowalke
6c35324727
use atomics per default
...
- atomics can be disable using BOOST_FIBERS_NO_ATOMICS compiler flag
2015-06-20 21:31:34 +02:00
Nat Goodspeed
97e132abd6
Add BOOST_ASSERT_MSG in case properties() called when null.
...
This could either be because the thread's current sched_algorithm is not a
subclass of sched_algorithm_with_properties (e.g. set_scheduling_algorithm()
was never called for this thread, so round_robin is in use), or because the
fiber has not yet reached execution. A fiber's properties are instantiated
when it is first scheduled.
2015-06-20 12:00:11 -04:00
Oliver Kowalke
20d08d98cd
enable atomics with BOOST_FIBERS_USE_ATOMCIS
2015-06-19 21:39:34 +02:00
Oliver Kowalke
2002dba9d3
enable/disable atomic<> with BOOST_FIBERS_THREADSAFE
2015-06-19 18:57:23 +02:00
Oliver Kowalke
61dc492f31
some stuff/corrections
2015-06-19 18:55:02 +02:00
Oliver Kowalke
52a9da9180
remove invalid noexcept specifier from fiber::detach()
2015-06-13 08:40:13 +02:00
Oliver Kowalke
e2404eefd7
introduce new queue for terminated fibers
2015-06-13 08:14:14 +02:00
Oliver Kowalke
baf9a55868
enable algiment of control structures on stack
2015-06-10 20:52:14 +02:00
Oliver Kowalke
e22c7fb1cb
some formating
2015-05-22 09:50:39 +02:00
Oliver Kowalke
2b7d48da12
rename queue_op_status -> channel_op_status
2015-05-22 09:32:36 +02:00
Oliver Kowalke
3c7084e359
fix call of execution_context::operator() * exampe priority
2015-05-14 12:11:37 +02:00
Nat Goodspeed
068aa87e8e
fiber_properties must be polymorphic. Add virtual destructor.
...
This was an inadvertent oversight. The existing destructor even had a comment
explaining why it must be virtual!
2015-05-13 08:40:45 -04:00
Nat Goodspeed
00098f171a
For compatibility with Boost 1.58, call execution_context::resume().
2015-05-13 08:39:25 -04:00
Nat Goodspeed
f5d136d974
Restore (merge-clobbered?) detach, join, interrupt method decls.
2015-05-13 08:38:28 -04:00
Nat Goodspeed
89b3dafd5c
Eliminate spurious whitespace differences from upstream develop.
2015-05-11 09:48:23 -04:00
Nat Goodspeed
77a443b03b
Merge branch 'develop' of github.com:olk/boost-fiber into sched-props-dev
2015-05-11 05:51:14 -04:00
Nat Goodspeed
a4e77e502f
Re-add bool fiber_manager::preserve_fpu() to header file.
2015-05-11 05:46:26 -04:00
Nat Goodspeed
765014daee
working our way through build errors
2015-05-11 05:38:45 -04:00
Nat Goodspeed
4eaed2a943
Start resolving build errors with newly-merged sched-props-dev branch.
...
Get fiber_manager out of the business of casting returned properties: that
introduces a circular dependency. Defer casting to fiber_properties subclass
to consumers in fiber.hpp and operations.hpp.
2015-05-11 04:25:05 -04:00
Nat Goodspeed
9c4cdf3438
Desk-checking pass through fiber_properties source code.
2015-05-10 23:35:15 -04:00
Nat Goodspeed
2687814477
Merge branch 'develop' of github.com:olk/boost-fiber into sched-props-dev
...
Resolved conflicts:
doc/condition_variables.qbk
examples/cpp03/migration/workstealing_round_robin.cpp
examples/cpp03/migration/workstealing_round_robin.hpp
include/boost/fiber/algorithm.hpp
include/boost/fiber/bounded_queue.hpp
include/boost/fiber/detail/fiber_base.hpp
include/boost/fiber/detail/fifo.hpp
include/boost/fiber/detail/waiting_queue.hpp
include/boost/fiber/detail/worker_fiber.hpp
include/boost/fiber/fiber.hpp
include/boost/fiber/fiber_manager.hpp
include/boost/fiber/fixedsize_stack.hpp
include/boost/fiber/operations.hpp
include/boost/fiber/round_robin.hpp
include/boost/fiber/unbounded_queue.hpp
src/detail/worker_fiber.cpp
src/fiber.cpp
src/fiber_manager.cpp
src/round_robin.cpp
2015-05-10 22:03:35 -04:00
Benjamin Worpitz
70c16383b7
Remove definition of BOOST_FIBERS_USE_VARIADIC_FIBER
...
Since the usage of variadic templates is now enabled by default and not emulated, the definition of the `BOOST_FIBERS_USE_VARIADIC_FIBER` macro can be removed.
2015-04-30 09:02:30 +02:00
Oliver Kowalke
6f5757ff8a
adapt new API of execution_context
2015-03-26 10:04:06 +01:00
Oliver Kowalke
eeaf6d3136
Update segmented_stack.hpp
2015-02-19 08:20:43 +01:00
Oliver Kowalke
1bd3e29ff8
rename execution_context::jump_to() -> execution_context::resume()
2015-02-18 18:53:51 +01:00
Oliver Kowalke
09123e20ad
remove unecessary fiber ctor
2015-02-14 11:10:46 +01:00
Oliver Kowalke
91c237666e
use C++14 features
...
- lambda capture expressions supports move-only types
- parameters are packed into std::tuple<> and with context-function
moved to the context-lambda (->lambda capture expression)
- in context-lambda context-function with packed parameters called
(-> deferred call)
2015-02-11 20:13:00 +01:00
Oliver Kowalke
aa337b07f7
move 'fm_' - free functions into fiber_manager
2015-02-08 16:02:22 +01:00
Oliver Kowalke
5a0f9394e8
Merge branch 'ctx-onstack-lambda' into develop
...
Conflicts:
examples/cpp03/migration/workstealing_round_robin.cpp
include/boost/fiber/bounded_queue.hpp
include/boost/fiber/detail/worker_fiber.hpp
include/boost/fiber/unbounded_queue.hpp
src/detail/worker_fiber.cpp
2015-02-06 18:32:35 +01:00
Oliver Kowalke
13bf486fea
update stack-allocators
2015-02-06 18:29:26 +01:00
Oliver Kowalke
f37d7c5511
store terminated fibers in tqueue
2015-01-15 21:22:10 +01:00
Oliver Kowalke
f22ae8ba53
use lambda as fiber-fn
2015-01-13 15:15:59 +01:00
Oliver Kowalke
27c0a78d36
allocate fiber_context on stack
2015-01-13 14:57:32 +01:00
Oliver Kowalke
9b7b0be903
Revert "improve spinlock algorithm"
...
This reverts commit 08f3b52193 .
2015-01-10 21:21:05 +01:00
Oliver Kowalke
08f3b52193
improve spinlock algorithm
2015-01-10 21:20:31 +01:00
Oliver Kowalke
fbe98be71e
std::copy_exception is deprecated (use std::make_exception_ptr)
2015-01-05 19:57:51 +01:00
Oliver Kowalke
654127af00
rename fiber_base -> fiber_context and move to public namespace
2015-01-04 16:05:08 +01:00