PJLIB的基础使用(1)

本文介绍了PJLIB中数据结构的应用,包括循环链表和数组的使用,详细阐述了如何初始化和利用缓冲池、内存池进行内存管理,并探讨了线程的创建与管理。特别强调了内存池的特性以及线程在PJSIP中的注册需求。
摘要由CSDN通过智能技术生成

**

一、数据结构之循环链表的使用:

**

#include <stdio.h>  
#include <pjlib.h>  
#include <pj/types.h> // for pj_init.  
  
#define THIS_FILE "main.c"  
  
typedef struct MY_NODE  
{
     
    // This must be the first member declared in the struct!  
    PJ_DECL_LIST_MEMBER(struct MY_NODE);  
    int val;  
} MY_NODE;  
  
/* 
循环链表测试 
*/  
void list_test(void);  
  
/* 
打印循环链表信息 
*/  
void list_print(pj_list_type* node);  
  
  
int main(int argc, char** argv)  
{
     
    pj_status_t status;  
  
    // pjlib库初始化  
    status = pj_init();  
    if (status != PJ_SUCCESS)  
    {
     
        char errmsg[PJ_ERR_MSG_SIZE];  
        pj_strerror(status, errmsg, sizeof(errmsg));  
        PJ_LOG(1,(THIS_FILE, "%s: %s [status=%d]", pj_init, errmsg, status));  
        return -1;  
    }  
  
    // 循环链表测试  
    list_test();  
  
    // pjlib库关闭  
    pj_shutdown();  
  
    return 0;  
}  
  
/* 
循环链表测试 
*/  
void list_test(void)  
{
     
    int i;  
    MY_NODE list;  
    MY_NODE array[10];  
  
    // 初始化一个空链表  
    pj_list_init(&list);  
  
    // 向链表插入节点  
    for (i=0; i<10; ++i)  
    {
     
        array[i].val = i;  
        pj_list_insert_before(&list, &array[i]);  
    }     
  
    // 打印循环链表信息  
    list_print(&list);  
  
    // 删除链表中的节点  
    for (i=0; i<10; ++i)  
    {
     
        pj_list_erase(&array[i]);  
    }     
  
    // 打印循环链表信息  
    list_print(&list);  
  
    // 检查链表是否为空  
    pj_assert(pj_list_empty(&list));  
  
}  
  
/* 
打印循环链表信息 
*/  
void list_print(pj_list_type* node)  
{
     
    int i;  
    MY_NODE *it;  
    MY_NODE *head;    
  
    head = it = (MY_NODE *)node;  
  
    if (it != NULL)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值