示例#1
0
文件: main.c 项目: iYefeng/acl
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;
}
示例#2
0
文件: main.cpp 项目: Geniuze/acl
int main(int argc, char *argv[])
{
	int   ch, i, conn_timeout = 2, rw_timeout = 2;
	acl::string addr("127.0.0.1:6379");

	while ((ch = getopt(argc, argv, "hs:n:c:r:t:")) > 0) {
		switch (ch) {
		case 'h':
			usage(argv[0]);
			return 0;
		case 's':
			addr = optarg;
			break;
		case 'n':
			__oper_count = atoi(optarg);
			break;
		case 'c':
			__fibers_count = atoi(optarg);
			__fibers_max = __fibers_count;
			break;
		case 'r':
			rw_timeout = atoi(optarg);
			break;
		case 't':
			conn_timeout = atoi(optarg);
			break;
		default:
			break;
		}
	}

	acl::acl_cpp_init();

	acl::redis_client_cluster cluster;
	cluster.set(addr.c_str(), 0, conn_timeout, rw_timeout);

	gettimeofday(&__begin, NULL);

	for (i = 0; i < __fibers_count; i++)
		acl_fiber_create(fiber_redis, &cluster, 327680);

	acl_fiber_schedule();

	return 0;
}
示例#3
0
文件: main.cpp 项目: LazyPlanet/acl
int main(int argc, char *argv[])
{
	int   ch, i, conn_timeout = 2, rw_timeout = 2, redis_connections = 10;
	acl::string addr("127.0.0.1:6379");

	while ((ch = getopt(argc, argv, "hs:n:c:p:r:t:")) > 0) {
		switch (ch) {
		case 'h':
			usage(argv[0]);
			return 0;
		case 's':
			addr = optarg;
			break;
		case 'n':
			__oper_count = atoi(optarg);
			break;
		case 'c':
			__fibers_count = atoi(optarg);
			__fibers_max = __fibers_count;
			break;
		case 'p':
			redis_connections = atoi(optarg);
			break;
		case 'r':
			rw_timeout = atoi(optarg);
			break;
		case 't':
			conn_timeout = atoi(optarg);
			break;
		default:
			break;
		}
	}

	acl::acl_cpp_init();

	// declare redis cluster
	acl::redis_client_cluster cluster;
	cluster.set(addr, 0, conn_timeout, rw_timeout);

	// declare fiber sem
	acl::fiber_sem sem(redis_connections);

	std::vector<fiber_redis*> fibers;

	gettimeofday(&__begin, NULL);

	for (i = 0; i < __fibers_count; i++)
	{
		fiber_redis* fiber = new fiber_redis(cluster, sem);
		fibers.push_back(fiber);
		fiber->start(320000);
	}

	acl_fiber_schedule();

	for (std::vector<fiber_redis*>::iterator it = fibers.begin();
		it != fibers.end(); ++it)
	{
		delete *it;
	}

	return 0;
}
示例#4
0
文件: fiber.cpp 项目: coolniu/acl
void fiber::schedule(void)
{
	acl_fiber_schedule();
}
示例#5
0
文件: main.cpp 项目: LazyPlanet/acl
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;
}