## GstTaskPool

GstTaskPool — Pool of GStreamer streaming threads

## Functions

void | (*GstTaskPoolFunction) ()
GstTaskPool * | gst_task_pool_new ()
void | gst_task_pool_prepare ()
gpointer | gst_task_pool_push ()
void | gst_task_pool_join ()
void | gst_task_pool_cleanup ()

## Types and Values

struct | GstTaskPool
struct | GstTaskPoolClass

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstTaskPool

## Includes

    #include <gst/gst.h>

## Description

This object provides an abstraction for creating threads. The default implementation uses a regular GThreadPool to start tasks.

Subclasses can be made to create custom threads.

Last reviewed on 2009-04-23 (0.10.24)

## Functions

### GstTaskPoolFunction ()

    void
    (*GstTaskPoolFunction) (void *user_data);

Task function, see `gst_task_pool_push()`.

#### Parameters

user_data | user data for the task function |

### gst_task_pool_new ()

    GstTaskPool *
    gst_task_pool_new (void);

Create a new default task pool. The default task pool will use a regular GThreadPool for threads.

#### Returns

a new GstTaskPool. `gst_object_unref()` after usage.

[transfer full]

### gst_task_pool_prepare ()

    void
    gst_task_pool_prepare (GstTaskPool *pool,
                           GError **error);

Prepare the taskpool for accepting `gst_task_pool_push()` operations.

MT safe.

#### Parameters

pool | a GstTaskPool |
error | an error return location |

### gst_task_pool_push ()

    gpointer
    gst_task_pool_push (GstTaskPool *pool,
                        GstTaskPoolFunction func,
                        gpointer user_data,
                        GError **error);

Start the execution of a new thread from `pool` .

#### Parameters

pool | a GstTaskPool |
func | the function to call. | [scope async]
user_data | data to pass to `func` . | [closure]
error | return location for an error |

#### Returns

a pointer that should be used for the gst_task_pool_join function. This pointer can be NULL, you must check `error` to detect errors.

[transfer none]

### gst_task_pool_join ()

    void
    gst_task_pool_join (GstTaskPool *pool,
                        gpointer id);

Join a task and/or return it to the pool. `id` is the id obtained from `gst_task_pool_push()`.

#### Parameters

pool | a GstTaskPool |
id | the id |

### gst_task_pool_cleanup ()

    void
    gst_task_pool_cleanup (GstTaskPool *pool);

Wait for all tasks to be stopped. This is mainly used internally to ensure proper cleanup of internal data structures in test suites.

MT safe.

#### Parameters

pool | a GstTaskPool |

## Types and Values

### struct GstTaskPool

    struct GstTaskPool;

The GstTaskPool object.

### struct GstTaskPoolClass

    struct GstTaskPoolClass {
      GstObjectClass parent_class;

      void      (*prepare)  (GstTaskPool *pool, GError **error);
      void      (*cleanup)  (GstTaskPool *pool);

      gpointer  (*push)     (GstTaskPool *pool, GstTaskPoolFunction func,
                             gpointer user_data, GError **error);
      void      (*join)     (GstTaskPool *pool, gpointer id);
    };

The GstTaskPoolClass object.

#### Members

GstObjectClass `parent_class`; | the parent class structure |
`prepare` () | prepare the threadpool |
`cleanup` () | make sure all threads are stopped |
`push` () | start a new thread |
`join` () | join a thread |

## See Also

GstTask, GstPad