关于控制初始化次数的问题

    今天在看解码程序ffmpeg的时候发现,初始化接口是这么写的:
   

void avcodec_init(void)
{
    static int initialized = 0;
    if(initialized != 0)
        return ;
    initialized = 1;
    dsputil_static_init();
}
    initialized用来控制初始化的次数,很好.
    我以前一直用的全局变量统计次数来控制初始化次数,有点麻烦.
    
DRV_TUN_RESULT drvTuner_initialize( void )

{

	__g_init_count++;

	

	if(__g_init_count == 1)

	{

	    __g_filter_working_num = 0;

	    memset(&__g_cur_info,0,sizeof(DRV_TUN_PARAMS));	     

	    if ((__g_usb_tuner_fd = open ("/dev/usb_tuner",  O_RDWR)) < 0) 

	    {

			perror ("can't open dev file r/w");

			return DRV_TUN_FAIL;

		}

		ioctl(__g_usb_tuner_fd, USB_RCV_START);

	}

	return DRV_TUN_OK;

}

DRV_TUN_RESULT drvTuner_finalize( void )

{

	__g_init_count--;

	

	if(__g_init_count == 0)

	{

		ioctl(__g_usb_tuner_fd, USB_RCV_CLOSE);

		close(__g_usb_tuner_fd);	

		__g_usb_tuner_fd = -1;

	}

	

	return DRV_TUN_OK;

}


    但是我后来反思到,如果用这种办法,反初始化时怎么控制?
    看来全局有全局的好处,局部有局部的好处,各有千秋.
    视情况而定,用那一种.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值