Ton programme fait quelque chose, non ? Tu en jettes les résultats ? Ou est-ce qu'ils persistent quelque part (au moins dans ta têtes, parce que tu les as vu affichés sur l'écrans) ?
Je veux bien les sauvegarder sur le disque dur, mais les laisser en RAM (avec la mémoire partagée donc) je vois pas trop l'intérêt.
Ton programme fait quelque chose, non ? Tu en jettes les
résultats ? Ou est-ce qu'ils persistent quelque part (au moins
dans ta têtes, parce que tu les as vu affichés sur l'écrans) ?
Je veux bien les sauvegarder sur le disque dur, mais les laisser en RAM
(avec la mémoire partagée donc) je vois pas trop l'intérêt.
Ton programme fait quelque chose, non ? Tu en jettes les résultats ? Ou est-ce qu'ils persistent quelque part (au moins dans ta têtes, parce que tu les as vu affichés sur l'écrans) ?
Je veux bien les sauvegarder sur le disque dur, mais les laisser en RAM (avec la mémoire partagée donc) je vois pas trop l'intérêt.
loufoque
(En passant : pourquoi est-ce que parler de l'« ownership » d'un objet me semble tout à fait naturel en anglais, mais que l'utilisation du mot « propriété » dans le même contexte en français ne me semble pas juste ?)
Peut-être à cause de l'ambiguïté avec « propriety »
(En passant : pourquoi est-ce que parler de l'« ownership »
d'un objet me semble tout à fait naturel en anglais, mais que
l'utilisation du mot « propriété » dans le même contexte en
français ne me semble pas juste ?)
Peut-être à cause de l'ambiguïté avec « propriety »
(En passant : pourquoi est-ce que parler de l'« ownership » d'un objet me semble tout à fait naturel en anglais, mais que l'utilisation du mot « propriété » dans le même contexte en français ne me semble pas juste ?)
Peut-être à cause de l'ambiguïté avec « propriety »
loufoque
Pourquoi ? Il faut bien synchroniser les accès ; dans notre cas, on s'est servi des pthread_rwlock directement. Sinon, on a remplacé l'allocateur, et ça a suffi. (La mémoire partagée, en l'occurance, venait de mmap. Je ne sais pas pourquoi, mais c'est beaucoup plus simple et plus efficace que le shmem de Posix.)
Ce que je voulais dire c'est que du coup on ne créé pas le conteneur normalement et on y accède avec un pointeur. Donc ce n'est pas un simple remplacement d'allocateur par rapport à une utilisation normale, on passe par une espèce de "fabrique" qui maintient des identifiants et des offsets pour chaque variable.
Pourquoi ? Il faut bien synchroniser les accès ; dans notre
cas, on s'est servi des pthread_rwlock directement. Sinon, on
a remplacé l'allocateur, et ça a suffi. (La mémoire partagée, en
l'occurance, venait de mmap. Je ne sais pas pourquoi, mais c'est
beaucoup plus simple et plus efficace que le shmem de Posix.)
Ce que je voulais dire c'est que du coup on ne créé pas le conteneur
normalement et on y accède avec un pointeur.
Donc ce n'est pas un simple remplacement d'allocateur par rapport à une
utilisation normale, on passe par une espèce de "fabrique" qui maintient
des identifiants et des offsets pour chaque variable.
Pourquoi ? Il faut bien synchroniser les accès ; dans notre cas, on s'est servi des pthread_rwlock directement. Sinon, on a remplacé l'allocateur, et ça a suffi. (La mémoire partagée, en l'occurance, venait de mmap. Je ne sais pas pourquoi, mais c'est beaucoup plus simple et plus efficace que le shmem de Posix.)
Ce que je voulais dire c'est que du coup on ne créé pas le conteneur normalement et on y accède avec un pointeur. Donc ce n'est pas un simple remplacement d'allocateur par rapport à une utilisation normale, on passe par une espèce de "fabrique" qui maintient des identifiants et des offsets pour chaque variable.
kanze
loufoque wrote:
Ton programme fait quelque chose, non ? Tu en jettes les résultats ? Ou est-ce qu'ils persistent quelque part (au moins dans ta têtes, parce que tu les as vu affichés sur l'écrans) ?
Je veux bien les sauvegarder sur le disque dur, mais les laisser en RAM (avec la mémoire partagée donc) je vois pas trop l'intérêt.
Mais quel rapport entre la mémoire partagée et la persistance ? Quand mes programmes terminent, la mémoire partagée cesse d'exister.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
loufoque wrote:
Ton programme fait quelque chose, non ? Tu en jettes les
résultats ? Ou est-ce qu'ils persistent quelque part (au moins
dans ta têtes, parce que tu les as vu affichés sur l'écrans) ?
Je veux bien les sauvegarder sur le disque dur, mais les
laisser en RAM (avec la mémoire partagée donc) je vois pas
trop l'intérêt.
Mais quel rapport entre la mémoire partagée et la persistance ?
Quand mes programmes terminent, la mémoire partagée cesse
d'exister.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Ton programme fait quelque chose, non ? Tu en jettes les résultats ? Ou est-ce qu'ils persistent quelque part (au moins dans ta têtes, parce que tu les as vu affichés sur l'écrans) ?
Je veux bien les sauvegarder sur le disque dur, mais les laisser en RAM (avec la mémoire partagée donc) je vois pas trop l'intérêt.
Mais quel rapport entre la mémoire partagée et la persistance ? Quand mes programmes terminent, la mémoire partagée cesse d'exister.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
kanze
loufoque wrote:
Pourquoi ? Il faut bien synchroniser les accès ; dans notre cas, on s'est servi des pthread_rwlock directement. Sinon, on a remplacé l'allocateur, et ça a suffi. (La mémoire partagée, en l'occurance, venait de mmap. Je ne sais pas pourquoi, mais c'est beaucoup plus simple et plus efficace que le shmem de Posix.)
Ce que je voulais dire c'est que du coup on ne créé pas le conteneur normalement et on y accède avec un pointeur.
D'accord. C'est vrai que pour les clients, c'est un peu différent -- on fait un coup de mmap, et du coup, on a une collection déjà faite, et même bien remplie.
Donc ce n'est pas un simple remplacement d'allocateur par rapport à une utilisation normale, on passe par une espèce de "fabrique" qui maintient des identifiants et des offsets pour chaque variable.
Pas vraiment. Il y a bien un calcul de l'adresse après le mmap, mais c'est tout. Ensuite, il fonctionne exactement comme n'importe quel std::map. C'est vrai même pour le serveur, que j'y pense. Sauf qu'il calcule l'adresse exactement comme font les clients, puis il se sert d'un new de placement. Et ensuite, c'est un std::map tout à fait comme un autre.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
loufoque wrote:
Pourquoi ? Il faut bien synchroniser les accès ; dans notre
cas, on s'est servi des pthread_rwlock directement. Sinon,
on a remplacé l'allocateur, et ça a suffi. (La mémoire
partagée, en l'occurance, venait de mmap. Je ne sais pas
pourquoi, mais c'est beaucoup plus simple et plus efficace
que le shmem de Posix.)
Ce que je voulais dire c'est que du coup on ne créé pas le
conteneur normalement et on y accède avec un pointeur.
D'accord. C'est vrai que pour les clients, c'est un peu
différent -- on fait un coup de mmap, et du coup, on a une
collection déjà faite, et même bien remplie.
Donc ce n'est pas un simple remplacement d'allocateur par
rapport à une utilisation normale, on passe par une espèce de
"fabrique" qui maintient des identifiants et des offsets pour
chaque variable.
Pas vraiment. Il y a bien un calcul de l'adresse après le mmap,
mais c'est tout. Ensuite, il fonctionne exactement comme
n'importe quel std::map. C'est vrai même pour le serveur, que
j'y pense. Sauf qu'il calcule l'adresse exactement comme font
les clients, puis il se sert d'un new de placement. Et ensuite,
c'est un std::map tout à fait comme un autre.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Pourquoi ? Il faut bien synchroniser les accès ; dans notre cas, on s'est servi des pthread_rwlock directement. Sinon, on a remplacé l'allocateur, et ça a suffi. (La mémoire partagée, en l'occurance, venait de mmap. Je ne sais pas pourquoi, mais c'est beaucoup plus simple et plus efficace que le shmem de Posix.)
Ce que je voulais dire c'est que du coup on ne créé pas le conteneur normalement et on y accède avec un pointeur.
D'accord. C'est vrai que pour les clients, c'est un peu différent -- on fait un coup de mmap, et du coup, on a une collection déjà faite, et même bien remplie.
Donc ce n'est pas un simple remplacement d'allocateur par rapport à une utilisation normale, on passe par une espèce de "fabrique" qui maintient des identifiants et des offsets pour chaque variable.
Pas vraiment. Il y a bien un calcul de l'adresse après le mmap, mais c'est tout. Ensuite, il fonctionne exactement comme n'importe quel std::map. C'est vrai même pour le serveur, que j'y pense. Sauf qu'il calcule l'adresse exactement comme font les clients, puis il se sert d'un new de placement. Et ensuite, c'est un std::map tout à fait comme un autre.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Sylvain
kanze wrote on 21/09/2006 09:09:
(En passant : pourquoi est-ce que parler de l'« ownership » d'un objet me semble tout à fait naturel en anglais, mais que l'utilisation du mot « propriété » dans le même contexte en français ne me semble pas juste ?)
ou encore "possède" vs "utilise".
Ce qui veut dire alors que tu as dû implémenter quelque chose de semblable, parce qu'avant, on n'avait que ce qu'on avait implémenté nous-même.
tout à fait, pour les concepts de string et array; un temps marqué par les OS sur lesquels j'utilisais ces outils (par exemple la toolbox MacOS utilisait bcp de string-pascal, donc mes chaines était pascal et zéro terminée); puis OS indépendant mais métier dépendant (la façon dont les structures de données sont utilisées, par exemple souvent copiées ou jamais, est marqué par la nature de l'application).
de fait switcher à la STL n'a jamais été ni requis ni parfois possible.
Sylvain.
kanze wrote on 21/09/2006 09:09:
(En passant : pourquoi est-ce que parler de l'« ownership »
d'un objet me semble tout à fait naturel en anglais, mais que
l'utilisation du mot « propriété » dans le même contexte en
français ne me semble pas juste ?)
ou encore "possède" vs "utilise".
Ce qui veut dire alors que tu as dû implémenter quelque chose de
semblable, parce qu'avant, on n'avait que ce qu'on avait
implémenté nous-même.
tout à fait, pour les concepts de string et array; un temps marqué par
les OS sur lesquels j'utilisais ces outils (par exemple la toolbox MacOS
utilisait bcp de string-pascal, donc mes chaines était pascal et zéro
terminée); puis OS indépendant mais métier dépendant (la façon dont les
structures de données sont utilisées, par exemple souvent copiées ou
jamais, est marqué par la nature de l'application).
de fait switcher à la STL n'a jamais été ni requis ni parfois possible.
(En passant : pourquoi est-ce que parler de l'« ownership » d'un objet me semble tout à fait naturel en anglais, mais que l'utilisation du mot « propriété » dans le même contexte en français ne me semble pas juste ?)
ou encore "possède" vs "utilise".
Ce qui veut dire alors que tu as dû implémenter quelque chose de semblable, parce qu'avant, on n'avait que ce qu'on avait implémenté nous-même.
tout à fait, pour les concepts de string et array; un temps marqué par les OS sur lesquels j'utilisais ces outils (par exemple la toolbox MacOS utilisait bcp de string-pascal, donc mes chaines était pascal et zéro terminée); puis OS indépendant mais métier dépendant (la façon dont les structures de données sont utilisées, par exemple souvent copiées ou jamais, est marqué par la nature de l'application).
de fait switcher à la STL n'a jamais été ni requis ni parfois possible.
Sylvain.
loufoque
Mais quel rapport entre la mémoire partagée et la persistance ? Quand mes programmes terminent, la mémoire partagée cesse d'exister.
Ben c'est Sylvain qui a commencé à parler de mémoire partagée pour faire des objets persistants. Je ne fais que dire que je voyais pas l'intérêt d'un tel type de persistance. (après, je connais pas vraiment la programmation sur PDA non plus)
Mais quel rapport entre la mémoire partagée et la persistance ?
Quand mes programmes terminent, la mémoire partagée cesse
d'exister.
Ben c'est Sylvain qui a commencé à parler de mémoire partagée pour faire
des objets persistants.
Je ne fais que dire que je voyais pas l'intérêt d'un tel type de
persistance. (après, je connais pas vraiment la programmation sur PDA
non plus)
Mais quel rapport entre la mémoire partagée et la persistance ? Quand mes programmes terminent, la mémoire partagée cesse d'exister.
Ben c'est Sylvain qui a commencé à parler de mémoire partagée pour faire des objets persistants. Je ne fais que dire que je voyais pas l'intérêt d'un tel type de persistance. (après, je connais pas vraiment la programmation sur PDA non plus)
Alain Gaillard
utilisait bcp de string-pascal, donc mes chaines était pascal et zéro terminée);
Des chaînes pascal zéro terminées ? Ah bon ?
-- Alain
utilisait bcp de string-pascal, donc mes chaines était pascal et zéro
terminée);
Mais quel rapport entre la mémoire partagée et la persistance ? Quand mes programmes terminent, la mémoire partagée cesse d'exister.
Ben c'est Sylvain qui a commencé à parler de mémoire partagée pour faire des objets persistants.
non j'ai dit que définir *son* mécanisme allocator permettait de gérer des objets partagées en mémoire *ou* de gérer des objets persistants.
ce sont 2 exemples distincts, merci de relire.
Sylvain.
Sylvain
Alain Gaillard wrote on 21/09/2006 19:04:
Des chaînes pascal zéro terminées ? Ah bon ?
je disais /à la fois/ préfixée de leur longueur (avec contraite de longueur max.) pour être transmisse à certaines API /et/ zéro terminée pour être utilisée par les fonctions de string.h
c'était juste une anecdote, plus personne aujourd'hui n'utilise la toolbox MacOS ...
Sylvain.
Alain Gaillard wrote on 21/09/2006 19:04:
Des chaînes pascal zéro terminées ? Ah bon ?
je disais /à la fois/ préfixée de leur longueur (avec contraite de
longueur max.) pour être transmisse à certaines API /et/ zéro terminée
pour être utilisée par les fonctions de string.h
c'était juste une anecdote, plus personne aujourd'hui n'utilise la
toolbox MacOS ...
je disais /à la fois/ préfixée de leur longueur (avec contraite de longueur max.) pour être transmisse à certaines API /et/ zéro terminée pour être utilisée par les fonctions de string.h
c'était juste une anecdote, plus personne aujourd'hui n'utilise la toolbox MacOS ...