[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Tsp-devel] reverse blackboard
From: |
Eric NOULARD |
Subject: |
[Tsp-devel] reverse blackboard |
Date: |
Tue, 04 Oct 2005 10:18:32 +0200 |
Je joins ci-après un mail sur une idée
discutée en privée mais que j'aimerais laissée sur
la liste pour la référencer dans une tâche projet.
>>>>
Créer un "reverse Blackboard" avec un reverse BB je peux faire
int localvar;
int* bbvar;
bbvar = bb_reverse_publish(&myreversebb, &localvar, BB_INT, "localvar")
cette publication inversée va publier une variable
du blackboard appelée "localvar" qui sera 'attachée' au sein du
reverse BB à l'adresse (locale au process qui publie)
de la variable localvar.
(ces publications sont éventuellement générées par un parseur de .h)
ensuite avant le bb_synchro et à chaque cycle on fera
[dans le process qui a fait le publish]
bb_reverse_update(&myreversebb)
ce qui provoquera la copie *bbvar = localvar (ou memcpy(bbvar,&localvar)
ce qu'on peut faire facilement car on a mémorisé l'@ de localvar.
Jusque là ca va mais ça coutera cher si on doit recopier
TOUTE les variables publiées car on peut pas faire de memcpy bourrin.
Donc on rajoute une message queue au blackboard
(non bloquante des 2 côtés) qui sera utilisée dans le sens
bb_provider ---> process [de simu] qui aura fait les bb_reverse_publish
avant d'envoyer ce message le provider aura indiqué via un flag
à rajouter au tableau de description du BB les variables EFFECTIVEMENT
demandées par l'ensemble de ses consumer.
Ceci permettra à chaque début de bb_reverse_update,
de vérifier si la liste des variables demandées à changé et
de ne copier que celle qui ont été demandées.
il faut coder:
bb_reverse_publish
bb_reverse_forward_update
modifier la structure de donnée actuellement
utilisée pour descrire une entrée blackboard pour
rajouter
asked = cette entrée BB est-elle demandée?
il faut aussi modifier le bb_provider afin qu'il sache gérer
la notification pour un bb_reverse
En l'état tu perds l'utilisabilité de bbtools::bb_write car
tu peux pas écraser la mémoire local du process sauf si celui ci
appelle
bb_reverse_return_update
AVANT le forward update.
Bon c'est probablement pas clair et ça semble compliqué
mais je suis presque sûr que ça marcherait en peut de temps
>>>>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Tsp-devel] reverse blackboard,
Eric NOULARD <=