Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postgres/doc/src/sgml/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 1 kB image not shown  

Quelle  parallel.h   Sprache: unbekannt

 
/*-------------------------------------------------------------------------
 *
 * parallel.h
 *
 * Parallel support for pg_dump and pg_restore
 *
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * IDENTIFICATION
 *  src/bin/pg_dump/parallel.h
 *
 *-------------------------------------------------------------------------
 */


#ifndef PG_DUMP_PARALLEL_H
#define PG_DUMP_PARALLEL_H

#include <limits.h>

#include "pg_backup_archiver.h"

/* Function to call in leader process on completion of a worker task */
typedef void (*ParallelCompletionPtr) (ArchiveHandle *AH,
            TocEntry *te,
            int status,
            void *callback_data);

/* Wait options for WaitForWorkers */
typedef enum
{
 WFW_NO_WAIT,
 WFW_GOT_STATUS,
 WFW_ONE_IDLE,
 WFW_ALL_IDLE,
} WFW_WaitOption;

/*
 * Maximum number of parallel jobs allowed.
 *
 * On Windows we can only have at most MAXIMUM_WAIT_OBJECTS (= 64 usually)
 * parallel jobs because that's the maximum limit for the
 * WaitForMultipleObjects() call.
 */

#ifdef WIN32
#define PG_MAX_JOBS MAXIMUM_WAIT_OBJECTS
#else
#define PG_MAX_JOBS INT_MAX
#endif

/* ParallelSlot is an opaque struct known only within parallel.c */
typedef struct ParallelSlot ParallelSlot;

/* Overall state for parallel.c */
typedef struct ParallelState
{
 int   numWorkers;  /* allowed number of workers */
 /* these arrays have numWorkers entries, one per worker: */
 TocEntry  **te;    /* item being worked on, or NULL */
 ParallelSlot *parallelSlot; /* private info about each worker */
} ParallelState;

#ifdef WIN32
extern bool parallel_init_done;
extern DWORD mainThreadId;
#endif

extern void init_parallel_dump_utils(void);

extern bool IsEveryWorkerIdle(ParallelState *pstate);
extern void WaitForWorkers(ArchiveHandle *AH, ParallelState *pstate,
         WFW_WaitOption mode);

extern ParallelState *ParallelBackupStart(ArchiveHandle *AH);
extern void DispatchJobForTocEntry(ArchiveHandle *AH,
           ParallelState *pstate,
           TocEntry *te,
           T_Action act,
           ParallelCompletionPtr callback,
           void *callback_data);
extern void ParallelBackupEnd(ArchiveHandle *AH, ParallelState *pstate);

extern void set_archive_cancel_info(ArchiveHandle *AH, PGconn *conn);

#endif       /* PG_DUMP_PARALLEL_H */

Messung V0.5 in Prozent
C=91 H=95 G=92

[zur Elbe Produktseite wechseln0.14QuellennavigatorsAnalyse erneut starten2026-08-08]