#include <stdio.h>
#include "mempool_list.h"
int mem_list_insert_head(mem_list *mem_list, const void *ptr,int mempool_index)
{
if(ptr == NULL)
return -1;
mem_node* new_node = (mem_node*)ptr;
pthread_mutex_lock(&mem_list->mtx);
new_node->mem_list_index = mempool_index;
if(mem_list->block_num == 0)
mem_list->tail = new_node;
new_node->next = mem_list->head;
mem_list->head = new_node;
mem_list->block_num ++;
pthread_mutex_unlock(&mem_list->mtx);
return 0;
}
/*在链表的尾部插入数据*/
int mem_list_insert_tail(mem_list *mem_list, const void *ptr,int mempool_index)
{
mem_node *new_node = (mem_node *)ptr; //创建插入的节点
if(new_node == NULL)
return -1;
new_node->mem_list_index = mempool_index;
pthread_mutex_lock(&mem_list->mtx);
if(mem_list->block_num == 0)
mem_list->head = new_node;
else
mem_list->tail->next = new_node;
mem_list->tail = new_node;
new_node->next = NULL;
mem_list->block_num++;
pthread_mutex_unlock(&mem_list->mtx);
return 0;
}
mem_node* mem_list_pop(mem_list *mem_list) {
pthread_mutex_lock(&mem_list->mtx);
if(mem_list->block_num == 0 ) {
pthread_mutex_unlock(&mem_list->mtx);
return NULL;
}
--mem_list->block_num;
mem_node* temp_node = mem_list->head;
mem_list->head = temp_node->next;
pthread_mutex_unlock(&mem_list->mtx);
return temp_node;
}
没有合适的资源?快使用搜索试试~ 我知道了~
c版本内存池实现完整源码
共4个文件
h:2个
c:2个
需积分: 5 0 下载量 39 浏览量
2023-06-05
14:19:57
上传
评论
收藏 2KB ZIP 举报
温馨提示
c版本内存池实现完整源码
资源推荐
资源详情
资源评论
收起资源包目录
mem_pool.zip (4个子文件)
mem_pool
mem_pool.h 267B
mempool_list.c 1KB
mem_pool.c 1KB
mempool_list.h 733B
共 4 条
- 1
资源评论
Coldestmonth
- 粉丝: 78
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功