Initialize a worker structure. Always check the return value even if passing
in a pre-allocated structure. Some other initialization may have failed. It
is not required to memset() a structure before providing it.
*
PARAMETERS
[in] worker Caller allocated structure, or NULL to allocate one.
RETURN VALUE
On success, a pointer to the (possibly allocated) structure. On
failure this will be NULL.