Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes16kdownloads
parallel.h83 linesDownload Raw Back to access
1/*-------------------------------------------------------------------------2 *3 * parallel.h4 *	  Infrastructure for launching parallel workers5 *6 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group7 * Portions Copyright (c) 1994, Regents of the University of California8 *9 * src/include/access/parallel.h10 *11 *-------------------------------------------------------------------------12 */13 14#ifndef PARALLEL_H15#define PARALLEL_H16 17#include "access/xlogdefs.h"18#include "lib/ilist.h"19#include "postmaster/bgworker.h"20#include "storage/shm_mq.h"21#include "storage/shm_toc.h"22 23typedef void (*parallel_worker_main_type) (dsm_segment *seg, shm_toc *toc);24 25typedef struct ParallelWorkerInfo26{27	BackgroundWorkerHandle *bgwhandle;28	shm_mq_handle *error_mqh;29	int32		pid;30} ParallelWorkerInfo;31 32typedef struct ParallelContext33{34	dlist_node	node;35	SubTransactionId subid;36	int			nworkers;		/* Maximum number of workers to launch */37	int			nworkers_to_launch; /* Actual number of workers to launch */38	int			nworkers_launched;39	char	   *library_name;40	char	   *function_name;41	ErrorContextCallback *error_context_stack;42	shm_toc_estimator estimator;43	dsm_segment *seg;44	void	   *private_memory;45	shm_toc    *toc;46	ParallelWorkerInfo *worker;47	int			nknown_attached_workers;48	bool	   *known_attached_workers;49} ParallelContext;50 51typedef struct ParallelWorkerContext52{53	dsm_segment *seg;54	shm_toc    *toc;55} ParallelWorkerContext;56 57extern PGDLLIMPORT volatile sig_atomic_t ParallelMessagePending;58extern PGDLLIMPORT int ParallelWorkerNumber;59extern PGDLLIMPORT bool InitializingParallelWorker;60 61#define		IsParallelWorker()		(ParallelWorkerNumber >= 0)62 63extern ParallelContext *CreateParallelContext(const char *library_name,64											  const char *function_name, int nworkers);65extern void InitializeParallelDSM(ParallelContext *pcxt);66extern void ReinitializeParallelDSM(ParallelContext *pcxt);67extern void ReinitializeParallelWorkers(ParallelContext *pcxt, int nworkers_to_launch);68extern void LaunchParallelWorkers(ParallelContext *pcxt);69extern void WaitForParallelWorkersToAttach(ParallelContext *pcxt);70extern void WaitForParallelWorkersToFinish(ParallelContext *pcxt);71extern void DestroyParallelContext(ParallelContext *pcxt);72extern bool ParallelContextActive(void);73 74extern void HandleParallelMessageInterrupt(void);75extern void HandleParallelMessages(void);76extern void AtEOXact_Parallel(bool isCommit);77extern void AtEOSubXact_Parallel(bool isCommit, SubTransactionId mySubId);78extern void ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end);79 80extern void ParallelWorkerMain(Datum main_arg);81 82#endif							/* PARALLEL_H */83 
codekingpro/portable-devtools · Team Ai