int main(int argc, char *argv[]) { int ch, i, nsenders = 1, nreceivers = 1, nbuf = 10; ACL_CHANNEL *chan; while ((ch = getopt(argc, argv, "hn:s:r:b:d:")) > 0) { switch (ch) { case 'h': usage(argv[0]); return 0; case 'n': __max = (unsigned long) atol(optarg); break; case 's': nsenders = atoi(optarg); break; case 'r': nreceivers = atoi(optarg); break; case 'b': nbuf = atoi(optarg); break; case 'd': __display = atoi(optarg); break; default: break; } } printf("max_count: %d\r\n", __max); chan = acl_channel_create(sizeof(unsigned long), nbuf); for (i = 0; i < nsenders; i++) acl_fiber_create(fiber_producer, chan, 320000); for (i = 0; i < nreceivers; i++) acl_fiber_create(fiber_consumer, chan, 320000); acl_fiber_schedule(); acl_channel_free(chan); return 0; }
int main(int argc, char *argv[]) { int ch, conn_timeout = 0, rw_timeout = 0, nworkers = 10; acl::string addr("127.0.0.1:6379"), cmd("set"); while ((ch = getopt(argc, argv, "hs:n:c:r:t:w:a:")) > 0) { switch (ch) { case 'h': usage(argv[0]); return 0; case 'a': cmd = optarg; break; case 'w': nworkers = atoi(optarg); break; case 's': addr = optarg; break; case 'n': __oper_count = atoi(optarg); break; case 'c': __fibers_max = atoi(optarg); break; case 'r': rw_timeout = atoi(optarg); break; case 't': conn_timeout = atoi(optarg); break; default: break; } } acl::acl_cpp_init(); __redis_cluster.set(addr.c_str(), 0, conn_timeout, rw_timeout); //gettimeofday(&__begin, NULL); if (nworkers > __fibers_max) nworkers = __fibers_max; nworkers = __fibers_max; MYCHANS mychans; mychans.size = nworkers; mychans.off = 0; mychans.chans = new MYCHAN[nworkers]; for (int i = 0; i < nworkers; i++) { mychans.chans[i].chan = acl_channel_create(sizeof(void*), 1000); mychans.chans[i].cmd = cmd; } __workers = new ACL_FIBER*[nworkers + 1]; for (int i = 0; i < nworkers; i++) __workers[i] = acl_fiber_create(fiber_worker, &mychans.chans[i], 32000); __workers[nworkers] = NULL; __fibers_count = nworkers; for (int i = 0; i < __fibers_max; i++) (void) acl_fiber_create(fiber_result, &mychans, 32000); __chan_exit = acl_channel_create(sizeof(unsigned long), 1000); acl_fiber_create(fiber_wait, __chan_exit, 32000); acl_fiber_schedule(); for (int i = 0; i < nworkers; i++) acl_channel_free(mychans.chans[i].chan); delete [] mychans.chans; acl_channel_free(__chan_exit); delete [] __workers; return 0; }