SquirrelMQ item cache问题

comsys 发布于 2013/01/25 15:27
阅读 192
收藏 0

SquirrelMQ dlist cache实现中存在问题

1. list_init中

“list->cache_used = 0;” cache_used初始化为0. "list->cache_size = cache_size > 0 ? cache_size : 0;"cache_size如果大于0则初始化为cache_size.

2. item_alloc中

if (list->cache_size && list->cache_used > 0) {
        node = list->caches[--list->cache_used];
    } else {
        node = (struct list_node *)malloc(sizeof(struct list_node));
    }

应为cache_size>0但是cache_used为0,“list->cache_size && list->cache_used > 0”为false, 即使系统已经分配了cache内存,系统也不会使用,而是直接从系统重新分配内存。

按照上面的逻辑“node = list->caches[--list->cache_used]”,cache_used应该初始化为cache_size的大小。



加载中
返回顶部
顶部