为提高性能,改用c替换原本的flask

This commit is contained in:
2025-09-28 12:02:26 +08:00
parent a0e9bf1b44
commit 3c574e489d
24 changed files with 7240 additions and 0 deletions

73
c/tools/log/log.c Normal file
View File

@ -0,0 +1,73 @@
#include "log.h"
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
int in_log(logs *log,log_manager *self)
{
sem_wait(&self->log_sem);//加锁
logs *buf = self->rear;
if(self->log == NULL){
self->log = log;
self->rear = log;
return 0;
}
self->count++;
buf->next = log;
log->next = NULL;
self->rear = log;
sem_post(&self->log_sem);
return self->count;
}
logs *out_log(log_manager *self)
{
sem_wait(&self->log_sem);
logs *buf = self->log;
if(self->log->next ==NULL)
self->log = self->rear = NULL;
self->count--;
sem_post(&self->log_sem);
buf->next =NULL;
return buf;
}
//定期清理函数
void *clear_log(void *self_p)
{
log_manager *self = (log_manager*)self_p;
for(;;)
{
sleep(1000);
sem_wait(&self->log_sem);
if(self->count<256){
sem_post(&self->log_sem);
continue;
}
logs* buf = self->log;
self->log = self->rear =NULL;
sem_post(&self->log_sem);
logs* tobeclear;
while(buf->next !=NULL)
{
tobeclear = buf;
buf = buf->next;
free(tobeclear);
}
}
}
int init_loger(log_manager *self)
{
if(self == NULL)
{
perror("NULL\n");
return -1;
}
sem_init(&self->log_sem, 0,1);
self->in_log = in_log;
self->out_log = out_log;
self->clear_log = clear_log;
self->log = NULL;
}

27
c/tools/log/log.h Normal file
View File

@ -0,0 +1,27 @@
#ifndef LOG
#define LOG
#include <semaphore.h>
#define MAX_LOG 256
typedef struct logs
{
char log[1024];
struct logs *next;
}logs;
typedef struct log_manager
{
int (*in_log)(logs *,struct log_manager*);
logs* (*out_log)(struct log_manager*);
void *(*clear_log)(void*);
sem_t log_sem;
logs *log;
logs *rear;
int count;
}log_manager;
int init_loger(log_manager *self);
#endif