30namespace MultiProcess {
50 bool dequeue_acknowledged =
true;
53 std::size_t mw_sub_index;
61 sigemptyset(&sigmask);
62 sigaddset(&sigmask, SIGTERM);
71 if (dequeue_acknowledged) {
73 dequeue_acknowledged =
false;
84 bool skip_sub =
false;
86 for (
auto readable_socket : poll_result) {
88 if (readable_socket.first == mw_sub_index) {
95 switch (message_q2w) {
97 dequeue_acknowledged =
true;
101 dequeue_acknowledged =
true;
109 auto job_id_for_state =
128 }
catch (std::logic_error &) {
129 printf(
"worker loop at PID %d got unhandleable ZMQ::ppoll_error_t\n", getpid());
135 printf(
"EINTR in worker loop at PID %d but no SIGTERM received, continuing\n", getpid());
138 printf(
"EAGAIN from ppoll in worker loop at PID %d, continuing\n", getpid());
141 }
catch (zmq::error_t &
e) {
142 printf(
"unhandled zmq::error_t (not a ppoll_error_t) in worker loop at PID %d with errno %d: %s\n", getpid(),
static bool getTimingAnalysis()
Messenger & messenger() const
static JobManager * instance()
static Job * get_job_object(std::size_t job_object_id)
std::size_t get_state_id()
Get the current state identifier.
virtual void send_back_task_result_from_worker(std::size_t task)=0
virtual void update_state()
Virtual function to update any necessary state on workers.
virtual void evaluate_task(std::size_t task)=0
value_t receive_from_master_on_worker(bool *more=nullptr)
value_t receive_from_queue_on_worker()
std::pair< ZeroMQPoller, std::size_t > create_worker_poller()
Helper function that creates a poller for worker_loop()
void send_from_worker_to_queue()
static bool sigterm_received()
static void start_timer(std::string section_name)
static void end_timer(std::string section_name)
Wrapper class for polling ZeroMQ sockets.
std::vector< std::pair< size_t, zmq::event_flags > > ppoll(int timeo, const sigset_t *sigmask)
Poll the sockets with ppoll.
void worker_loop()
The worker processes' event loop.
bool is_worker_loop_running()
zmq_ppoll_error_response handle_zmq_ppoll_error(ZMQ::ppoll_error_t &e)
static bool worker_loop_running
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...