在我们的场景中,我们启动了多个齿轮工服务器,并使用多个线程将作业分配给工作人员。在下面的 API 函数中,unique
参数的默认值为NULL
。
void *gearman_client_do(gearman_client_st *client, const char *function_name, const char *unique, const void *workload, size_t workload_size, size_t *result_size, gearman_return_t *ret_ptr);
所以我们在这里观察到的是,如果同时分配两个作业,那么齿轮服务器会搞砸这两个。无论哪个作业较早完成,都将作为两个作业的结果返回。
这是真的吗,如果将gearman_client_do()
中的unique
分配给NULL
,齿轮工将使用时间戳来区分不同的作业?
编辑:键入gearman_client_do
服务器可以使用唯一 ID 来减少队列长度。如果 已提交具有相同唯一 ID 的作业,服务器可以 将此请求附加到现有作业。这包括工作 已在进行中,在这种情况下,将发送非后台作业 结果与后台作业相同。这通常被称为 "合并"。
Gearman 协议 唯一 ID 处理的描述。
这是真的吗,那个齿轮师会用时间戳来区分 如果将 gearman_client_do(( 中的唯一值分配给 零?
时间戳是队列中作业顺序的问题。gearmand
将在没有唯一 ID 的情况下执行每个作业。 另请参阅gearman_client_do的实施