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.