Skip to content
Snippets Groups Projects

Make the implementations of the work-stealing queue(s) selectable

Merged Florian Schmaus requested to merge flow/emper:queue-config into master
Files
13
@@ -7,9 +7,13 @@
#include <type_traits>
#include "Common.hpp"
#include "Fibril.hpp"
#include "StealingResult.hpp"
// Forward declaration, declared and defined in Fibril.hpp.
namespace emper {
void maybeLockFibril(void* queueItem);
}
namespace adt {
template <typename I, const uintptr_t SIZE>
@@ -62,11 +66,7 @@ class LockedQueue {
// by Schmaus et al. [schmaus2021nowa], Figure 6. and Listing 2.
if constexpr (emper::CONTINUATION_STEALING_MODE_LOCKED &&
std::is_same<AbstractFiber*, I>::value) {
AbstractFiber* abstractFiber = static_cast<AbstractFiber*>(*itemPtr);
Fibril* fibril = abstractFiber->asFibrilIfPossible();
if (fibril) {
fibril->fibrilMutex.lock();
}
emper::maybeLockFibril(*itemPtr);
}
deque.pop_front();
Loading