Bonjour,
je voudrais ordonnancer deux événements en parallèle: remplir deux files d'attente simultanément en utilisant un trafic de poisson. J'ai cherché sur Internet et je suis tombée sur les structures sigaction pour appeler une fonction suite à l'émission d'un signal et itimerval pour générer périodiquement ce signal. Le problème est que dans mon cas, ce n'est pas périodique mais les intervalles de temps au bout desquels le signal doit être généré pour chacune des deux files d'attente suit une loi exponentielle. Voici ce que j'ai écrit jusqu'à maintenant, j'aimerais s'il vous plait avoir votre avis:
void Queue_class::SetPoissonTraficFirstQueue(void)
Et dans le main, j'appelle les deux fonctions de la sorte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 { // ajout d'un premier paquet à la file struct sigaction act ; struct itimerval timer ; act.sa_handler = this ; sigempty_set(&act.sa_mask) ; act.sa_flags = 0 ; sigaction(SIGALARM, &act,0) ; timer.it_value.tv_usec = 0 ; timer.it_value.tv_sec = exponential_variable() ; timer.it_interval.tv_sec = 0 ; timer.it_interval.tv_usec = 0 ; setitimer(ITIMER_REAL, *timer, NULL) ; } void Queue_class::SetPoissonTraficSecondQueue(void) { // ajout d'un premier paquet à la file struct sigaction act ; struct itimerval timer ; act.sa_handler = this ; sigempty_set(&act.sa_mask) ; act.sa_flags = 0 ; sigaction(SIGALARM, &act,0) ; timer.it_value.tv_usec = 0 ; timer.it_value.tv_sec = exponential_variable() ; timer.it_interval.tv_sec = 0 ; timer.it_interval.tv_usec = 0 ; setitimer(ITIMER_REAL, *timer, NULL) ; }
Je voudrais savoir:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int main() { Queue_class queue ; queue.SetPoissonTraficFirstQueue() ; queue.SetPoissonTraficSecondQueue() ; // do business }
1- si c'est une bonne idée d'utiliser l'objet courant "this" dans la méthode sa_handler pour que la fonction s'auto-appelle?
2- si les deux files d'attente se remplissent en même temps comme je le souhaite.
Merci de m'aider.
Partager