我一直在尝试使用他们的 C API (libgearman) 来实现 Gearman worker。但是他们的 C API 文档很差而且不完整。尽管它与使用其他语言(例如 PHP)创建工作人员非常相似,但我仍然无法通过 *gearman_worker_add_function();*
在工作人员中注册函数具体来说,我无法找到如何创建 *gearman_worker_fn* 的对象。
谢谢!
最佳答案
根据 this documentation :
typedef void*( gearman_worker_fn)(gearman_job_st *job, void *context, size_t *result_size, gearman_return_t *ret_ptr)
Definition at line 407 of file constants.h.
这是一个函数指针 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);
请注意,我只是传递了函数名称——这会降级为“函数指针”。
关于在 C 中创建 Gearman Worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697543/