hazelia
Messages postés40Date d'inscriptiondimanche 4 juillet 2010StatutMembreDernière intervention 2 juin 2014
-
14 juin 2011 à 10:35
hazelia
Messages postés40Date d'inscriptiondimanche 4 juillet 2010StatutMembreDernière intervention 2 juin 2014
-
5 juil. 2011 à 23:34
Bonjour,
Je me permet de poster pour la première fois dans ce site, car je suis débutante en c++ et suis bloquée sur un programme à réaliser.
En fait, je suis en train de développer un simulateur réseau (version simple) qui consiste à envoyer des paquets de différents flux dans une topologie réseaux et d'ajouter des délais introduits par chaque nœud réseau dans le chemin du paquet. J'ai défini mes classes flux, paquet, nœud réseau et port, toutefois, je ne vois pas trop comment faire évoluer en parallèle mes flux! :s
N'hésitez pas à partager avec moi vos suggestions, références utiles, documentation,... tout ce qui peut aider! :)
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 14 juin 2011 à 10:49
Salut,
Déjà sur le principe, si tu es débutante je doute fort que ce soit une bonne idée de commencer par du réseau et de la parallélisation. Enfin après tu fais ce que tu veux, surtout si tu as déjà une solide expérience dans d'autres langage tu peu très bien t'en sortir.
Bref, ceci dit, pour ton problème tu devrais regarder du côté des threads. Attention, avant toute utilisation des threards tu dois te renseigner sur ce qu'est le code réentrant et une section critique (voir également les infos sur les mutex et sémaphores).
Je te recommande également le lien suivant qui t'aidera à éviter certains problèmes liés à l'utilisation des mutex : use lock classes for mutex management.
hazelia
Messages postés40Date d'inscriptiondimanche 4 juillet 2010StatutMembreDernière intervention 2 juin 2014 14 juin 2011 à 11:02
Salut,
Je vais commencer par me documenter sur ce que tu m'a suggéré pour avoir les idées claires!
Je ne te cache pas, je suis débutante en développement en général, ce que j'ai fait en programmation jusqu'à maintenant est du niveau débutant. En fonçant plus, je m'en sortirais je crois! :D
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 19 juin 2011 à 12:48
Salut,
Je dis ça je dis rien mais il y avait peut être plus simple. Plutôt que de faire un thread par flux, tu aurais aussi pu faire un peu comme le système d'exploitation et faire un boucle sur tes flux.
Pseudo code :
while (1)
{
for (i = 0; i < nbflux; i++)
{
UpdateFlux(Flux[i]);
}
Sleep(1);
}
D'autre part, les flux/paquets sont des choses inertes qui transites. J'aurais plutôt vu la partie traitement sur les noeuds (Avec par exemple une file d'attente en entrée).
Pseudo code :
while (1)
{
for (i = 0; i < NodesCount; i++)
{
UpdateNode(nodes[i]);
}
Sleep(1);
}
void UpdateNode(Node node)
{
for (i = 0; i < node.inputQueue.count; i++)
{
Packet currentPacket = node.inputQueue[i];
OutputInterface dest = GetOutputInterface(node.RoutingTable, currentPacket);
dest.Cable.add(currentPacket);
}
}
hazelia
Messages postés40Date d'inscriptiondimanche 4 juillet 2010StatutMembreDernière intervention 2 juin 2014 5 juil. 2011 à 23:34
Salut,
Effectivement, je crois qu'il est plus simple de gérer les flux en sa basant sur le principe des files d'attente sur chaque ressource de chaque nœud passe le paquet. Comme je l'ai mentionné au début de mon post, je suis débutante en c++ et j'ai du arrêter le développement de mon simulateur pour ce mois :S. Si j'arrive à mettre en ouevre mon programme, je le partagerai ;)
Merci^^
NB: Désolée pour le délai de réponse, un petit souci avec ma boite mail... :s