pass a fiberHint through the onNewWork notifications
The FiberHint is needed to decide in the runtime which worker to wake up. * Hint(Worker, FiberSource::inbox) -> try to notify the specific worker * Hint(FiberSource::{local,anywhereQueue}) -> notify anyone The first case is needed because due to the new worker local inbox queues we must notify the worker of the queue to prevent sleep locks. The SemaphoreSleepStrategy already has a notifySpecific implementation but it is very naive badly and we should implement new ones. The second case is the what the runtime has done before. Its WakeupStrategy decides how many workers the SleepStrategy should wake up. Also remove default CallerEnvironment template parameters to prevent errors where the CallerEnvironment was forgotten and not passed on a call side.
parent
0ea46b9c
No related branches found
No related tags found
Showing
- emper/Runtime.hpp 28 additions, 6 deletionsemper/Runtime.hpp
- emper/Scheduler.cpp 9 additions, 6 deletionsemper/Scheduler.cpp
- emper/Scheduler.hpp 6 additions, 5 deletionsemper/Scheduler.hpp
- emper/sleep_strategy/AbstractWorkerSleepStrategy.hpp 1 addition, 9 deletionsemper/sleep_strategy/AbstractWorkerSleepStrategy.hpp
- emper/sleep_strategy/SemaphoreWorkerSleepStrategy.hpp 1 addition, 3 deletionsemper/sleep_strategy/SemaphoreWorkerSleepStrategy.hpp
- emper/strategies/AbstractWorkStealingScheduler.cpp 5 additions, 5 deletionsemper/strategies/AbstractWorkStealingScheduler.cpp
- emper/strategies/laws/LawsScheduler.cpp 4 additions, 2 deletionsemper/strategies/laws/LawsScheduler.cpp
- emper/strategies/ws/WsScheduler.hpp 4 additions, 2 deletionsemper/strategies/ws/WsScheduler.hpp
Loading
Please register or sign in to comment