# Creating Gearman Worker Connections

## SYNOPSIS

#include <libgearman/gearman.h>

gearman_worker_st *gearman_worker_create(gearman_worker_st *client)

gearman_worker_st *gearman_worker_clone(gearman_worker_st *client, const gearman_worker_st *from)

void gearman_worker_free(gearman_worker_st *client)

Link with -lgearman

## DESCRIPTION

gearman_worker_create() is used to create a `gearman_worker_st` structure that will then be used by other libgearman(3) client functions to communicate with the server. You should either pass a statically declared `gearman_worker_st` to gearman_worker_create) or a NULL. If a NULL passed in then a structure is allocated for you.

`gearman_worker_clone()` is similar to `gearman_worker_create()` but it copies the defaults and list of servers from the source `gearman_worker_st`. If you pass a null as the argument for the source to clone, it is the same as a call to gearman_worker_create(). If the destination argument is NULL a `gearman_worker_st` will be allocated for you.

To clean up memory associated with a `gearman_worker_st` structure you should pass it to `gearman_worker_free()` when you are finished using it. `gearman_worker_free` is the only way to make sure all memory is deallocated when you finish using the structure.

You may wish to avoid using `gearman_worker_create()` or `gearman_worker_clone()` with a stack based allocation, ie the first parameter. The most common issues related to ABI safety involve heap allocated structures.

## RETURN VALUE

`gearman_worker_create()` returns a pointer to the `gearman_worker_st` that was created (or initialized). On an allocation failure, it returns NULL.

`gearman_worker_clone()` returns a pointer to the `gearman_worker_st` that was created (or initialized). On an allocation failure, it returns NULL.

## HOME

To find out more information please check: http://gearman.info/

See also

gearmand(8) libgearman(3) gearman_strerror(3)