tsp-devel
[Top][All Lists]
Advanced

[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
>>>>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]