18.2.43. PMIx_Progress
PMIx_Progress — Step the PMIx progress engine when the host is
driving progress of the library.
18.2.43.1. SYNOPSIS
#include <pmix.h>
void PMIx_Progress(void);
18.2.43.1.1. Python Syntax
from pmix import *
foo = PMIxClient()
foo.progress()
18.2.43.2. DESCRIPTION
Advance the PMIx library’s internal progress engine by one iteration. Normally
the library runs a dedicated internal progress thread that services events on
its own. When that thread is disabled — for example, when the host has
requested to drive progress itself by passing the PMIX_EXTERNAL_PROGRESS
attribute to PMIx_Init(3) — no such thread runs,
and the host becomes responsible for periodically stepping the engine.
PMIx_Progress performs a single, non-blocking pass over the library’s event
base: it dispatches any events that are currently ready and then returns
immediately, without waiting for further activity. The host is expected to call
it repeatedly (for example, from within its own progress or event loop) so that
PMIx operations continue to make forward progress.
PMIx_Progress takes no arguments. If the library has no shared progress
engine configured, the call is a no-op and returns without doing anything.
18.2.43.3. RETURN VALUE
PMIx_Progress returns no value (void).
18.2.43.4. NOTES
Special care must be taken to avoid deadlocking when driving progress from within PMIx callback functions and APIs, as reentering the library from a context that is itself being progressed can produce circular waits.
PMIx_Progress is only meaningful when the internal progress thread has been
disabled. When PMIx is running its own progress thread, calling this function is
unnecessary.
See also