用C创建一个Gearman Worker

时间:2011-07-14 17:37:42

标签: c api gearman

我一直在尝试用他们的C API(libgearman)实现Gearman工作者。但是他们的C API文档很差而且不完整。虽然它非常类似于使用其他语言(如PHP)创建工作程序,但我仍然无法通过* gearman_worker_add_function(); *

在工作程序中注册函数

具体来说,我无法找到如何创建* gearman_worker_fn *的对象。

谢谢!

1 个答案:

答案 0 :(得分:6)

根据this documentation

  

typedef void *(gearman_worker_fn)(gearman_job_st * job,void * context,   size_t * result_size,gearman_return_t * ret_ptr)

     

文件constants.h的第407行定义。

这是一个函数指针typedef:基本上你只需要创建一个具有正确签名的函数(返回void *,接收gearman_job_st *void *size_t *gearman_return_t *),然后传入函数名称。

示例:

void *do_work(gearman_job_st *job, void *context, size_t *result_size, gearman_return_t *ret_ptr)
{
    do_something();
}

/* Later... */

    gearman_worker_add_function(worker, function_name, timeout, do_work, context);

请注意,我只是传递函数名称 - 这会降级为“函数指针”。