C实现简单的资源池,确保所得资源空闲时间最长

本文介绍了一种C语言实现的简单资源池管理方法,确保分配的资源是最长时间未使用的。通过obtain_resource获取资源,使用后用release_resource归还。资源池初始化允许设置资源初始状态。虽然链表也能实现类似功能,但相比数组操作,链表涉及更多内存管理和复杂代码。
摘要由CSDN通过智能技术生成
#define INVALID_RESOUCE 0xFFFFFFFF
struct resouce_manager
{
    int pool_size;
    int pool_head;
    int resouce_left;


    int resouce_pool[1]; /* resouce_pool[0] 's value means invalid */
};


struct resouce_manager * get_resouce_manager(int size)
{
    int i;
    struct resouce_manager * manager = malloc(sizeof(struct resouce_manager) + size * sizeof(int));
    if (manager == NULL)
        return NULL;


    manager->pool_size = size;
    manager->pool_head = 1;
    manager->resouce_left = size;
    manager->resouce_pool[0] = INVALID_RESOUCE;


    for (i = 1; i <= size; ++i)
    {
        manager->resouce_pool[i] = i;
    }


    return manager;
}


void release_resouce_manager(struct resouce_manager * manager)
{
    if (manager)
        free(manager);
}


int obtain_resouce(struct resouce_manager * manager)
{
    int resouce;
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值