这几天接手代码之后,添加了柳氏风格的LOG。昨天检查LOG的时候,发现有的设备会初始化多次。于是研究了代码,使用的是线程初始化,如果中途断线还要一直初始化。仔细想想,这个思路有点问题。怎样确保当前只有一个初始化的工作?
经过深入思考:
- 设计一个结构体,包括工作指针和一个时间。
- 指针初始化为NULL,时间初始化为0。
- 初始化之前,把时间设置为1。
- 使用线程初始化。把这个结构体传进去。
- 初始化成功,指针指向工作;初始化失败,指针为NULL。
- 时间设置为当前。
- 检查:
指针不为NULL,表示初始化成功,且状态正常;
指针为NULL,时间为1,正在初始化;
指针为NULL,时间大于1,指定间隔后再次初始化。