1.一种嵌入式操作系统异步日志记录的实现方法,其特征在于,包括如下步骤:
步骤1:创建日志记录执行线程,日志输出语句与业务逻辑语句在不同线程中运行;
步骤2:创建并发线程间数据交换的通讯框架,不同的日志输出会创建不同的执行线程;
步骤3:创建日志输出执行线程,日志事件根据日志的配置在单独的线程中执行日志写入操作。
2.根据权利要求1所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述步骤1中的日志输出语句与业务逻辑语句在不同线程中运行,有专门的线程用于进行日志输出操作,处理业务逻辑的主线程执行后续业务逻辑。
3.根据权利要求1所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述步骤2包括如下步骤:
步骤2.1:框架内部核心数据结构队列为ringbuffer,设计为无锁环形队列;
步骤2.2:并发线程对环形队列的访问采用cas的无锁策略方法;
步骤2.3:使用缓存行填充的方法来解决多个变量共享同一个缓存行的性能问题。
4.根据权利要求3所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述步骤2.1中的无锁环形队列首尾相连,对列循环使用,使用数组来保存。
5.根据权利要求3所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述步骤2.2中的并发线程间通讯看成是生产者和消费者模型。
6.根据权利要求5所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述用户线程为生产者,日志输出执行线程为消费者,单个生产者和单个消费者,生产者和消费者各自维护自己的指针,不需要加锁。
7.根据权利要求5所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述生产者为一个,消费者为多个,消费者控制自己的指针,依次读取各自序号对应的数据,不需要加锁。
8.根据权利要求5所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述生产者为多个,多个线程共用一个写指针,采用cas的方法。
9.根据权利要求3所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述步骤2.3中的内存的访问速度低于cpu的运行速度,在内存和cpu之间,加入cache,cpu访问cache中的数据,cache未命中,访问内存中的数据。
10.根据权利要求1所述的一种嵌入式操作系统异步日志记录的实现方法,其特征在于,所述步骤3中的日志输出是文件或者网络数据包;采用线程池的方法,线程池在日志输出之前创建完成。