-/* $Id: mmserver.c,v 1.35 2007/03/13 20:28:22 mmondor Exp $ */
+/* $Id: mmserver.c,v 1.35.4.1 2007/03/15 17:09:47 mmondor Exp $ */
/*
* Copyright (C) 2000-2004, Matthew Mondor
MMCOPYRIGHT("@(#) Copyright (c) 2000-2004\n\
\tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmserver.c,v 1.35 2007/03/13 20:28:22 mmondor Exp $");
+MMRCSID("$Id: mmserver.c,v 1.35.4.1 2007/03/15 17:09:47 mmondor Exp $");
/* This consists of a general purpose thread which can serve real
* asynchroneous functions via another thread, suitable to use for functions
* which can block the whole process when using non-preemptive threads like
- * the Pth library provides. Pth message ports are used to communicate with
- * this device in a way that processes waiting for results only block
- * the requesting thread. The function internally uses unix datagrams to
- * similarly communicate arguments and obtain back results from a free process
- * in the asynchroneous processes pool. Another advantage of this technique is
- * that on SMP systems the various processors can now be taken advantage of.
+ * the mm_pthread_util library provides. Efficient interthread message ports
+ * are used to communicate with this device in a way that processes waiting for
+ * results only block the requesting thread. The function internally uses unix
+ * datagrams to similarly communicate arguments and obtain back results from a
+ * free process in the asynchroneous processes pool. This system can be used
+ * for parallel processing with a non-preemptive threading library or for
+ * tasks which are best served by another process (i.e. stack issues, etc).
* The caller should of course expect data rather than pointers to be used for
* both arguments and return values since pointers are only valid for the
* current process.
* required, as well as memory copy operations. Moreover, two new
* filedescriptor are required in the main process for each asynchroneous
* process in our pool.
- * It should be used where necessary, like calculating MD5 hashes, resolving
+ * It can be used where necessary, like calculating MD5 hashes, resolving
* hostnames and evaluating directory tree sizes recursively, etc.
*
* It would have been possible to use different datagram sizes to transfer
* arguments and results to/from the other processes, but because of the way
- * the Pth AmigaOS-style messages work, a decision was made so that unions are
+ * AmigaOS-style messages work, a decision was made so that unions are
* used by async functions and the whole structure is transfered back and
* forth.
*/
-/* $Id: mmserver.h,v 1.11 2007/03/13 20:28:22 mmondor Exp $ */
+/* $Id: mmserver.h,v 1.11.4.1 2007/03/15 17:09:47 mmondor Exp $ */
/*
* Copyright (C) 2000-2004, Matthew Mondor
-/* These are for the special asynchroneous functions support for functions Pth
- * cannot provide without blocking the whole process. They will be dispatched
- * to a specialized process through the Pth message passing system.
- */
-
/* A message which is to pass arguments to the async thread for a function,
* and to receive the function results. The user structure is usually
* different for both sides. The msg and func_id fields will be transfered
* back unchanged. Generally the user provides a fixed size structure using
* a union to be transfered both ways (results and arguments parts). As the
- * Pth library messages are moved around by simply moving pointers, like on
- * AmigaOs, this is ideal.
+ * mm_pthread_util messages are moved around by simply moving pointers, like
+ * on AmigaOs, this is ideal.
*/
struct async_msg {
pnode_t node;