"Stan" ( remove the dots )> writes:Avant ça ne pouvait pas être le cas, Linux ne supportant pas
les threads !
J'ai fait un programme multithreadé sous Linux avant la sortie
du 2.6. J'ai du rêver alors.Aujourd'hui, la 2.6 gére les threads et comme le fait
remarquer James, un process est en fait un (super) thread.
Ben justement, en 2.4, chaque thread a un PID différent. La
création d'un thread est grosso-modo un fork() + partage de la
mémoire et autres ressources. En 2.6 avec la NPTL, le kernel
fait une nette différence entre un thread et un processus.
"Stan" <z.y.l.o.g@wanadoo.fr ( remove the dots )> writes:
Avant ça ne pouvait pas être le cas, Linux ne supportant pas
les threads !
J'ai fait un programme multithreadé sous Linux avant la sortie
du 2.6. J'ai du rêver alors.
Aujourd'hui, la 2.6 gére les threads et comme le fait
remarquer James, un process est en fait un (super) thread.
Ben justement, en 2.4, chaque thread a un PID différent. La
création d'un thread est grosso-modo un fork() + partage de la
mémoire et autres ressources. En 2.6 avec la NPTL, le kernel
fait une nette différence entre un thread et un processus.
"Stan" ( remove the dots )> writes:Avant ça ne pouvait pas être le cas, Linux ne supportant pas
les threads !
J'ai fait un programme multithreadé sous Linux avant la sortie
du 2.6. J'ai du rêver alors.Aujourd'hui, la 2.6 gére les threads et comme le fait
remarquer James, un process est en fait un (super) thread.
Ben justement, en 2.4, chaque thread a un PID différent. La
création d'un thread est grosso-modo un fork() + partage de la
mémoire et autres ressources. En 2.6 avec la NPTL, le kernel
fait une nette différence entre un thread et un processus.
wrote:différents processus. Une des applications sur laquelle je
travaille ici utilise bien de la mémoire partagée (au moyen
de mmap), et synchronise ses « processus » au moyen des
mutex situé dans cette mémoire. Du coup, je me sers des
moyens de communication traditionnellement associés à des
threads pour la communication entre processus.
Sauf qu'ils sont gérés dans de la mémoire partagée, qui, elle,
dispose d'une gestion spécifique adaptée à de la communication
entre processus.
C'est simplement par une bonne séparation des couches (la
mutex d'une part et la mémoire partagée d'autre part) que l'on
a le sentiment de gérer la communication entre threads de la
même manière que la communication entre processus.
En somme, la distiction thread-processus est plus
conventionnelle que fondamentale.
Je dirais que dans ton cas, elle reste fondamentale, mais que
la mémoire partagée te donne un moyen de t'abstraire de cette
distinction. En tout cas, c'est plutôt comme ça que je le
vois.
Mais il y a une chose qui, je crois, ressort de ce que tu dis
(notamment ton expérience avec certains systèmes temps-réel),
c'est que les notions de thread et de processus sont
éminemment conventionnelles.
kanze@gabi-soft.fr wrote:
différents processus. Une des applications sur laquelle je
travaille ici utilise bien de la mémoire partagée (au moyen
de mmap), et synchronise ses « processus » au moyen des
mutex situé dans cette mémoire. Du coup, je me sers des
moyens de communication traditionnellement associés à des
threads pour la communication entre processus.
Sauf qu'ils sont gérés dans de la mémoire partagée, qui, elle,
dispose d'une gestion spécifique adaptée à de la communication
entre processus.
C'est simplement par une bonne séparation des couches (la
mutex d'une part et la mémoire partagée d'autre part) que l'on
a le sentiment de gérer la communication entre threads de la
même manière que la communication entre processus.
En somme, la distiction thread-processus est plus
conventionnelle que fondamentale.
Je dirais que dans ton cas, elle reste fondamentale, mais que
la mémoire partagée te donne un moyen de t'abstraire de cette
distinction. En tout cas, c'est plutôt comme ça que je le
vois.
Mais il y a une chose qui, je crois, ressort de ce que tu dis
(notamment ton expérience avec certains systèmes temps-réel),
c'est que les notions de thread et de processus sont
éminemment conventionnelles.
wrote:différents processus. Une des applications sur laquelle je
travaille ici utilise bien de la mémoire partagée (au moyen
de mmap), et synchronise ses « processus » au moyen des
mutex situé dans cette mémoire. Du coup, je me sers des
moyens de communication traditionnellement associés à des
threads pour la communication entre processus.
Sauf qu'ils sont gérés dans de la mémoire partagée, qui, elle,
dispose d'une gestion spécifique adaptée à de la communication
entre processus.
C'est simplement par une bonne séparation des couches (la
mutex d'une part et la mémoire partagée d'autre part) que l'on
a le sentiment de gérer la communication entre threads de la
même manière que la communication entre processus.
En somme, la distiction thread-processus est plus
conventionnelle que fondamentale.
Je dirais que dans ton cas, elle reste fondamentale, mais que
la mémoire partagée te donne un moyen de t'abstraire de cette
distinction. En tout cas, c'est plutôt comme ça que je le
vois.
Mais il y a une chose qui, je crois, ressort de ce que tu dis
(notamment ton expérience avec certains systèmes temps-réel),
c'est que les notions de thread et de processus sont
éminemment conventionnelles.
Dans le message ,Oui et non. Toutes les primitives de communication
« inter-processus » sont aussi disponibles pour la communication
entre threads.
Oui, mais on ne fait pas des threads pour ça, plutôt pour
faire ce qu'on ne peut pas faire avec des processus séparés...
En fait, sous Linux (et sous la dernière version de Solaris,
et je crois aussi sous Windows), il n'y a pas de processus
au sens classique ; il n'y a que des threads.
Alors nous n'avons plus à discuter des différences, puisque
tout dépend de ce point de vue de départ... Si tu pars du
principe que c'est la même chose alors oui, ce sera la même
chose ! Pour moi, quand il y a des appels systèmes différents,
c'est différent.
Dans le message 1121246203.855782.221360@o13g2000cwo.googlegroups.com,
Oui et non. Toutes les primitives de communication
« inter-processus » sont aussi disponibles pour la communication
entre threads.
Oui, mais on ne fait pas des threads pour ça, plutôt pour
faire ce qu'on ne peut pas faire avec des processus séparés...
En fait, sous Linux (et sous la dernière version de Solaris,
et je crois aussi sous Windows), il n'y a pas de processus
au sens classique ; il n'y a que des threads.
Alors nous n'avons plus à discuter des différences, puisque
tout dépend de ce point de vue de départ... Si tu pars du
principe que c'est la même chose alors oui, ce sera la même
chose ! Pour moi, quand il y a des appels systèmes différents,
c'est différent.
Dans le message ,Oui et non. Toutes les primitives de communication
« inter-processus » sont aussi disponibles pour la communication
entre threads.
Oui, mais on ne fait pas des threads pour ça, plutôt pour
faire ce qu'on ne peut pas faire avec des processus séparés...
En fait, sous Linux (et sous la dernière version de Solaris,
et je crois aussi sous Windows), il n'y a pas de processus
au sens classique ; il n'y a que des threads.
Alors nous n'avons plus à discuter des différences, puisque
tout dépend de ce point de vue de départ... Si tu pars du
principe que c'est la même chose alors oui, ce sera la même
chose ! Pour moi, quand il y a des appels systèmes différents,
c'est différent.
writes:
| Gabriel Dos Reis wrote:
| > Fabien LE LEZ writes:
| > [...]
| > | Et d'après le même dictionnaire, le mot "truck" existe
| > | en français, mais a un autre sens ("wagon en plate-forme
| > | pour le transport des objets encombrants et pesants").
| > Ici, « truck » existe aussi en Americain (devrais-je dire
| > « Texan » ?) et il a tout un autre sens :-) :-)
| Le mot « truck » est un bon mot américain (non seulement
| texan), avec deux significations fréquentes : camion, et
| bogie. En
Au Texas, cela a une autre signification.
kanze@gabi-soft.fr writes:
| Gabriel Dos Reis wrote:
| > Fabien LE LEZ <gramster@gramster.com> writes:
| > [...]
| > | Et d'après le même dictionnaire, le mot "truck" existe
| > | en français, mais a un autre sens ("wagon en plate-forme
| > | pour le transport des objets encombrants et pesants").
| > Ici, « truck » existe aussi en Americain (devrais-je dire
| > « Texan » ?) et il a tout un autre sens :-) :-)
| Le mot « truck » est un bon mot américain (non seulement
| texan), avec deux significations fréquentes : camion, et
| bogie. En
Au Texas, cela a une autre signification.
writes:
| Gabriel Dos Reis wrote:
| > Fabien LE LEZ writes:
| > [...]
| > | Et d'après le même dictionnaire, le mot "truck" existe
| > | en français, mais a un autre sens ("wagon en plate-forme
| > | pour le transport des objets encombrants et pesants").
| > Ici, « truck » existe aussi en Americain (devrais-je dire
| > « Texan » ?) et il a tout un autre sens :-) :-)
| Le mot « truck » est un bon mot américain (non seulement
| texan), avec deux significations fréquentes : camion, et
| bogie. En
Au Texas, cela a une autre signification.