Historique des modifications - Message

Message #9627

Sujet: performance vector


Type Date Auteur Contenu
Dernière modification 27-01-2011 10:01:46 Magun
je parlais des inline wink
le soucis avec inline ses qu'il inject plus ou moin le code dans le code, au moment de la compilation, et il arrive qu'il enchevetre les instructions a cause du multithreading, où alors il peut confrondre les variables a modifier

par exemple:
inlne void free_memory(void *mem){ delete mem; mem = 0; }
l'apelle de cette fonction n'est pas standar, c'est a dire qu'au lieux de faire apelle a la fonction il va injecter sont code au moment de la compilation
on se retrouve donc avec

Code c++ :

void *mem = (void*)new data();
delete mem;
mem = 0;

au lieux d'un apelle 'classic'

Code c++ :

void *mem = (void*)new data();
free_memory(mem);


se pendant on peut tout a fait se retrouver avec

Code c++ :


void *mem0 = (void*)new data();
void *mem1 = (void*)new data();
//thread 1
delete mem0;
mem = 0;
//thread 2
delete mem0;
mem0 = 0; // alors que c'était destiner a mem1

a cause du multithreading, même si ça na pas été coder comme ça, enfin c'est asser complex et pas facil à résumer en 10 ligne, sachant qu'une codition pour savoir si mem est allouer ou non, ne corrige pas toujours le probleme, bref, regarde du coter des thread-safe, rare sont les examples et applications, car il faut être sur cas t'elle moment on écris pas sur t'elle variable avec 2 thread .... etc
Création du message 27-01-2011 10:00:47 Magun
je parlais des inline wink
le soucis avec inline ses qu'il inject plus ou moin le code dans le code, au moment de la compilation, et il arrive qu'il enchevetre les instructions a cause du multithreading, où alors il peut confrondre les variables a modifier

par exemple:
inlne void free_memory(void *mem){ delete mem; mem = 0; }
l'apelle de cette fonction n'est pas standar, c'est a dire qu'au lieux de faire apelle a la fonction il va injecter sont code au moment de la compilation
on se retrouve donc avec

Code c++ :

void *mem = (void*)new data();
delete mem;
mem = 0;

au lieux d'un apelle 'classic'

Code c++ :

void *mem = (void*)new data();
free_memory(mem);


se pendant on peut tout a fait se retrouver avec

Code c++ :


void *mem0 = (void*)new data();
void *mem1 = (void*)new data();
//thread 1
delete mem0;
mem = 0;
//thread 2
delete mem0;
mem0 = 0; // alors que c'était destiner a mem1

a cause du multithreading, même si ça na pas été coder comme ça, enfin c'est asser complex et pas facil à résumer en 10 ligne, sachant qu'une codition pour savoir si mem est allouer ou non, ne corrige pas toujours le probleme, bref, regarde du coter des thread-safe, rare sont les examples et applications, car il faut être sur cas t'elle moment on écris pas sur t'elle variable avec 2 thread .... etc

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
167 invités en ligne
membre en ligne: -
RSS Feed