#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;
C实现简单的资源池,确保所得资源空闲时间最长
最新推荐文章于 2022-11-20 14:29:56 发布
本文介绍了一种C语言实现的简单资源池管理方法,确保分配的资源是最长时间未使用的。通过obtain_resource获取资源,使用后用release_resource归还。资源池初始化允许设置资源初始状态。虽然链表也能实现类似功能,但相比数组操作,链表涉及更多内存管理和复杂代码。
摘要由CSDN通过智能技术生成