#include <ncbi.h>
#include <gishlib.h>

TaskBlkPtr LIBCALL
run_wild(n, func, userp, globtp, tickproc, nticks, numprocs, nprocs, sigterm)
	unsigned long	n; /* Number of discrete subtasks */
	void	(LIBCALL *func)(TaskBlkPtr);
	Nlm_VoidPtr	userp;
	TaskBlkPtr	PNTR globtp;
	void	(LIBCALL *tickproc)();
	unsigned long	nticks;
	int		numprocs;
	int		PNTR nprocs;
	void	(LIBCALL *sigterm)();
{
	TaskBlkPtr	tp;

	if (n == 0)
		return NULL;

	tp = TaskNew(n, userp, tickproc, nticks);
	if (globtp != NULL)
		*globtp = tp;
	tp->nprocs = tp->proc_max = 1;
	TaskInit(tp, 1);
	sys_signal(SIGTERM, sigterm);
	*nprocs = 1;
	(*func)(tp);
	*nprocs = 0;
	tp->nprocs = 0;
	return tp;
}

