Ejemplo n.º 1
0
/* 处理来自于监听线程的消息命令的主入口 */
static void proctl_msg_main(void)
{
	const char *myname = "proctl_msg_main";
	PROCTL_MSG *msg;

	LOCK_WAITING_SERVICE;
	while (1) {
		msg = acl_fifo_pop(__services_wait);
		if (msg == NULL)
			break;
		switch (msg->msg_type) {
		case PROCTL_MSG_START:
			proctl_msg_start(msg);
			break;
		default:
			acl_msg_error("%s(%d): unknown msg type(%d)",
				myname, __LINE__, msg->msg_type);
			break;
		}

		proctl_msg_free(msg);
	}
	
	UNLOCK_WAITING_SERVICE;
}
Ejemplo n.º 2
0
void file_cache_free(FILE_CACHE *cache)
{
    BUFFER *buffer;

    acl_htable_delete(__cache_table, cache->path, NULL);

    while (1) {
        buffer = (BUFFER*) acl_fifo_pop(cache->fifo);
        if (buffer == NULL)
            break;
        acl_myfree(buffer->buf);
        acl_myfree(buffer);
    }

    acl_fifo_free(cache->fifo, NULL);
    acl_myfree(cache);
}
Ejemplo n.º 3
0
static void fifo_test(bool use_slice)
{
	ACL_FIFO *fifo;
	int   i;
	char *ptr;
	ACL_SLICE_POOL *slice;

	if (use_slice)
		slice = acl_slice_pool_create(10, 100,
			ACL_SLICE_FLAG_GC2 | ACL_SLICE_FLAG_RTGC_OFF);
	else
		slice = NULL;

	fifo = acl_fifo_new1(slice);

	for (i = 0; i < 20; i++) {
		if (slice)
			ptr = (char*) acl_slice_pool_alloc(__FILE__, __LINE__,
					slice, 100);
		else
			ptr = (char*) acl_mymalloc(100);
		snprintf(ptr, 100, "test:%d", i);
		(void) acl_fifo_push(fifo, ptr);
		printf(">>>ptr: %s\n", ptr);
	}

	while (1) {
		ptr = (char*) acl_fifo_pop(fifo);
		if (ptr == NULL)
			break;
		printf("fifo pop: %s\n", ptr);
	}

	if (slice == NULL)
		acl_fifo_free(fifo, acl_myfree_fn);
	else
		acl_slice_pool_destroy(slice);
}