summaryrefslogtreecommitdiff
path: root/lib/element_impl.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/element_impl.hpp')
-rw-r--r--lib/element_impl.hpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/element_impl.hpp b/lib/element_impl.hpp
index 3148d93..727e756 100644
--- a/lib/element_impl.hpp
+++ b/lib/element_impl.hpp
@@ -51,12 +51,20 @@ struct ElementImpl
return topology.get();
}
- //call this before sending a high prio message to all workers
- void pre_post_all_set_prio(void)
+ template <typename MessageType>
+ void bcast_prio_msg(const MessageType &msg)
{
+ Theron::Receiver receiver;
BOOST_FOREACH(Apology::Worker *worker, this->executor->get_workers())
{
- dynamic_cast<BlockActor *>(worker)->highPrioPreNotify();
+ MessageType message = msg;
+ message.prio_token = dynamic_cast<BlockActor *>(worker)->prio_token;
+ worker->Push(message, receiver.GetAddress());
+ }
+ size_t outstandingCount(this->executor->get_workers().size());
+ while (outstandingCount != 0)
+ {
+ outstandingCount -= receiver.Wait(outstandingCount);
}
}