用C创建一个Gearman Worker

cro*_*ire 3 c api gearman

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

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

谢谢!

Pla*_*ure 6

根据这个文件:

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);
Run Code Online (Sandbox Code Playgroud)

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