Sto cercando una soluzione che sia veloce e sempre leggibile. Devo farlo in C ma il codice sarà statico alla fine, il che significa che potrei usare qualsiasi strumento per generarlo.
Ho un compito che viene eseguito ciclicamente e chiama anche diverse funzioni ciclicamente
Main functions cycle is 1.
Function a has also cycle 1. So the main function calls it every time
Function b has cycle 2. Main function calls it every second cycle.
Function c has cycle 2.
Function d has cycle 4.
Function e has cycle 4.
Function f has cycle 4.
Function g has cycle 4.
... many more ....
Function X has cycle 500.
Se abbiamo molte funzioni che vengono eseguite nello stesso ciclo, proviamo a distribuirle.
Quindi per la funzione b la chiameremmo in un ciclo ec nell'altra. Distribuire il carico in modo uniforme.
Simile per d a g. Ognuno viene chiamato in un ciclo diverso.
La mia attuale implementazione è pessima.
Ogni sviluppatore che ha dovuto aggiungere il proprio compito alla funzione principale calcola il proprio modulo e chiama quando necessario. Questo porta a un codice molto illeggibile.
Stavo pensando di fare qualcosa del tipo:
uint32 mod4 = timer % 4;
bool fourth_1 = mod4 == 0;
bool fourth_2 = mod4 == 1;
bool fourth_3 = mod4 == 2;
bool fourth_4 = mod4 == 3;
bool second_1 = fourth_1 || fourth_3;
bool second_2 = fourth_2 || fourth_4;
/* and so on*/
Ma questo sembra complicato e troppo incline agli errori specialmente perché il tempo di ciclo più alto è troppo alto.
Come affrontare questo tipo di problema?
-Edit -
Come richiesto ho compilato alcune informazioni sul numero di funzioni che ho:
- 32 funzioni ciclo 1
- 9 funzioni ciclo 2
- 14 funzioni ciclo 4
- 3 funzioni ciclo 8
- Ciclo 3 funzioni 32
- 3 funzioni ciclo 40
- 2 funzioni ciclo 200
- Ciclo di 2 funzioni 400