/*-
* $Id: rr-workpool.h,v 1.4 2002/05/11 17:54:01 jonas Exp $
*
* See the file LICENSE for redistribution information.
* If you have not received a copy of the license, please contact CodeFactory
* by email at info@codefactory.se, or on the web at http://www.codefactory.se/
* You may also write to: CodeFactory AB, SE-903 47, Umeå, Sweden.
*
* Copyright (c) 2002 Jonas Borgström <jonas@codefactory.se>
* Copyright (c) 2002 Daniel Lundin <daniel@codefactory.se>
* Copyright (c) 2002 CodeFactory AB. All rights reserved.
*/
#ifndef __RR_WORKPOOL_H__
#define __RR_WORKPOOL_H__
typedef struct _RRWorkPool RRWorkPool;
typedef struct _RRWorkPoolClass RRWorkPoolClass;
#define RRWPGROUP(x) ((RRWPGroup)x)
#include <glib-object.h>
typedef guint RRWPGroup;
G_BEGIN_DECLS
struct _RRWorkPool {
gint max_threads;
gint num_threads;
GSList *work;
GSList *active;
GMutex *mutex;
GCond *add_cond;
GCond *remove_cond;
gboolean shutdown;
};
RRWorkPool *rr_work_pool_new (gint max_threads);
void rr_work_pool_free (RRWorkPool *pool);
void rr_work_pool_push (RRWorkPool *pool,
RRWPGroup gid, GFunc func,
gpointer data, gpointer user_data);
void rr_work_pool_join (RRWorkPool *pool, RRWPGroup gid);
G_END_DECLS
#endif /* __RR_WORKPOOL_H__ */
syntax highlighted by Code2HTML, v. 0.9.1