int main(void) { gearman_client_st *client= gearman_client_create(NULL); gearman_return_t ret= gearman_client_add_server(client, "localhost", 0); if (gearman_failed(ret)) { return EXIT_FAILURE; } size_t result_size; gearman_return_t rc; void *value= gearman_client_do(client, "reverse_function", "unique_value", "my string to reverse", strlen("my string to reverse"), &result_size, &rc); if (gearman_success(rc)) { // Make use of value } free(value); gearman_client_free(client); return 0; }
//http://gearman.info/libgearman/gearman_client_do_background.html //http://gearman.info/libgearman/gearman_client_options.html int main(void) { gearman_client_st *client= gearman_client_create(NULL); gearman_return_t ret= gearman_client_add_server(client, "localhost", 0); if (gearman_failed(ret)) { return EXIT_FAILURE; } gearman_job_handle_t job_handle; gearman_return_t rc= gearman_client_do_background(client, "echo", NULL,// unique Optional unique job identifier, or NULL for a new UUID.如果写成唯一值只会提交一个任务(即使重复提交) "hello-world", strlen("hello-world"), job_handle); if (gearman_success(rc)) { // Make use of value printf("return %s\n", job_handle); } gearman_client_free(client); return 0; }
SEXP success(SEXP Sclient){ rgearman_client_t *client = (rgearman_client_t *)R_ExternalPtrAddr(Sclient); SEXP ret = PROTECT(allocVector(LGLSXP,1)); LOGICAL(ret)[0] = (gearman_success(client->lastretcode))? TRUE : FALSE; UNPROTECT(1); return ret; }