comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes adequats pour garantir l'integrité de la donnée vis a vis des acces concurrents des differents threads. (cf CriticalSection).
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Bonjour,
Jean-François GAZET a écrit :
Bonjour,
comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes
adequats pour garantir l'integrité de la donnée vis a vis des acces
concurrents des differents threads.
(cf CriticalSection).
--
"MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes adequats pour garantir l'integrité de la donnée vis a vis des acces concurrents des differents threads. (cf CriticalSection).
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Jean-François GAZET
> > Bonjour, > comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes adequats pour garantir l'integrité de la donnée vis a vis des acces concurrents des differents threads. (cf CriticalSection).
Merci. Vous avez des liens sur ce sujet ? même en anglais ? Car google me sort trop de sites avec "CriticalSection" et je ne suis pas sur qu'ils traitent tous de ce problème.
> > Bonjour,
> comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes
adequats pour garantir l'integrité de la donnée vis a vis des acces
concurrents des differents threads.
(cf CriticalSection).
Merci.
Vous avez des liens sur ce sujet ? même en anglais ?
Car google me sort trop de sites avec "CriticalSection" et je ne suis pas
sur qu'ils traitent tous de ce problème.
> > Bonjour, > comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes adequats pour garantir l'integrité de la donnée vis a vis des acces concurrents des differents threads. (cf CriticalSection).
Merci. Vous avez des liens sur ce sujet ? même en anglais ? Car google me sort trop de sites avec "CriticalSection" et je ne suis pas sur qu'ils traitent tous de ce problème.
Thierry
Bonjour,
Jean-François GAZET a écrit :
Merci. Vous avez des liens sur ce sujet ? même en anglais ? Car google me sort trop de sites avec "CriticalSection" et je ne suis pas sur qu'ils traitent tous de ce problème.
http://msdn.microsoft.com/
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Bonjour,
Jean-François GAZET a écrit :
Merci.
Vous avez des liens sur ce sujet ? même en anglais ?
Car google me sort trop de sites avec "CriticalSection" et je ne suis pas
sur qu'ils traitent tous de ce problème.
http://msdn.microsoft.com/
--
"MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Merci. Vous avez des liens sur ce sujet ? même en anglais ? Car google me sort trop de sites avec "CriticalSection" et je ne suis pas sur qu'ils traitent tous de ce problème.
http://msdn.microsoft.com/
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Arnaud Debaene
Jean-François GAZET wrote:
Bonjour, comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes adequats pour garantir l'integrité de la donnée vis a vis des acces concurrents des differents threads. (cf CriticalSection).
Merci. Vous avez des liens sur ce sujet ? même en anglais ? Car google me sort trop de sites avec "CriticalSection" et je ne suis pas sur qu'ils traitent tous de ce problème.
Logiquement, si, il traitent bien du problème (c'est la fonction d'eun section critique de synchroniser les accès concurrents à une variable).
Arnaud
Jean-François GAZET wrote:
Bonjour,
comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes
adequats pour garantir l'integrité de la donnée vis a vis des acces
concurrents des differents threads.
(cf CriticalSection).
Merci.
Vous avez des liens sur ce sujet ? même en anglais ?
Car google me sort trop de sites avec "CriticalSection" et je ne suis
pas sur qu'ils traitent tous de ce problème.
Logiquement, si, il traitent bien du problème (c'est la fonction d'eun
section critique de synchroniser les accès concurrents à une variable).
Bonjour, comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes adequats pour garantir l'integrité de la donnée vis a vis des acces concurrents des differents threads. (cf CriticalSection).
Merci. Vous avez des liens sur ce sujet ? même en anglais ? Car google me sort trop de sites avec "CriticalSection" et je ne suis pas sur qu'ils traitent tous de ce problème.
Logiquement, si, il traitent bien du problème (c'est la fonction d'eun section critique de synchroniser les accès concurrents à une variable).
Arnaud
Christophe Lephay
Manuel Leclerc wrote:
Jean-François GAZET a écrit :
comment déclarer une variable "thread safe" ?
^^^^^^^^^^^^^^^^^^^^^^
C'est quoi ?
Une variable qui ne va pas se trouver dans un état indéterminé suite à des accès concurrents...
Chris
Manuel Leclerc wrote:
Jean-François GAZET a écrit :
comment déclarer une variable "thread safe" ?
^^^^^^^^^^^^^^^^^^^^^^
C'est quoi ?
Une variable qui ne va pas se trouver dans un état indéterminé suite à des
accès concurrents...
Une variable qui ne va pas se trouver dans un état indéterminé suite à des accès concurrents...
Chris
Christophe Lephay
Thierry wrote:
Bonjour,
Jean-François GAZET a écrit :
Bonjour,
comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes adequats pour garantir l'integrité de la donnée vis a vis des acces concurrents des differents threads. (cf CriticalSection).
Au choix, des sections critiques ou des mutex (mutual exclusion). L'inconvénient des sections critiques sur les mutex, c'est qu'elles se bloquent mutuellement même si elles n'accèdent pas aux mêmes ressources. Par exemple si tu as deux threads accédant à une variable commune et deux autres accédant à un fichier commun, un seul des quatre thread ne sera exécuté à chaque instant alors que deux le seront avec des mutex.
Chris
Thierry wrote:
Bonjour,
Jean-François GAZET a écrit :
Bonjour,
comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes
adequats pour garantir l'integrité de la donnée vis a vis des acces
concurrents des differents threads.
(cf CriticalSection).
Au choix, des sections critiques ou des mutex (mutual exclusion).
L'inconvénient des sections critiques sur les mutex, c'est qu'elles se
bloquent mutuellement même si elles n'accèdent pas aux mêmes ressources. Par
exemple si tu as deux threads accédant à une variable commune et deux autres
accédant à un fichier commun, un seul des quatre thread ne sera exécuté à
chaque instant alors que deux le seront avec des mutex.
comment déclarer une variable "thread safe" ? quel est le principe ?
Pas de declaration particuliere, faut juste utiliser les mecanismes adequats pour garantir l'integrité de la donnée vis a vis des acces concurrents des differents threads. (cf CriticalSection).
Au choix, des sections critiques ou des mutex (mutual exclusion). L'inconvénient des sections critiques sur les mutex, c'est qu'elles se bloquent mutuellement même si elles n'accèdent pas aux mêmes ressources. Par exemple si tu as deux threads accédant à une variable commune et deux autres accédant à un fichier commun, un seul des quatre thread ne sera exécuté à chaque instant alors que deux le seront avec des mutex.
Chris
Arnaud Debaene
Christophe Lephay wrote:
Au choix, des sections critiques ou des mutex (mutual exclusion). L'inconvénient des sections critiques sur les mutex, c'est qu'elles se bloquent mutuellement même si elles n'accèdent pas aux mêmes ressources. Par exemple si tu as deux threads accédant à une variable commune et deux autres accédant à un fichier commun, un seul des quatre thread ne sera exécuté à chaque instant alors que deux le seront avec des mutex.
Mais qu'est ce que tu racontes là? Dans les 2 cas, il s'agit d'utiliser un objet de synchronisation par objet à synchroniser, c'est tout.
Les seules différences entre mutex et sections critiques sont : - un mutex peut être partagé entre plusieurs processus. - les threads en attente d'un mutex sont dans une file d'attente FIFO. Avec une section critique, le prochain thread a obtenir la section critique n'est pas prédictible. - les sections critiques sont plus légères (pas d'objet noyau) et plus rapides à acquérir / relacher.
Arnaud
Christophe Lephay wrote:
Au choix, des sections critiques ou des mutex (mutual exclusion).
L'inconvénient des sections critiques sur les mutex, c'est qu'elles se
bloquent mutuellement même si elles n'accèdent pas aux mêmes
ressources. Par exemple si tu as deux threads accédant à une variable
commune et deux autres accédant à un fichier commun, un seul des
quatre thread ne sera exécuté à chaque instant alors que deux le
seront avec des mutex.
Mais qu'est ce que tu racontes là? Dans les 2 cas, il s'agit d'utiliser un
objet de synchronisation par objet à synchroniser, c'est tout.
Les seules différences entre mutex et sections critiques sont :
- un mutex peut être partagé entre plusieurs processus.
- les threads en attente d'un mutex sont dans une file d'attente FIFO. Avec
une section critique, le prochain thread a obtenir la section critique n'est
pas prédictible.
- les sections critiques sont plus légères (pas d'objet noyau) et plus
rapides à acquérir / relacher.
Au choix, des sections critiques ou des mutex (mutual exclusion). L'inconvénient des sections critiques sur les mutex, c'est qu'elles se bloquent mutuellement même si elles n'accèdent pas aux mêmes ressources. Par exemple si tu as deux threads accédant à une variable commune et deux autres accédant à un fichier commun, un seul des quatre thread ne sera exécuté à chaque instant alors que deux le seront avec des mutex.
Mais qu'est ce que tu racontes là? Dans les 2 cas, il s'agit d'utiliser un objet de synchronisation par objet à synchroniser, c'est tout.
Les seules différences entre mutex et sections critiques sont : - un mutex peut être partagé entre plusieurs processus. - les threads en attente d'un mutex sont dans une file d'attente FIFO. Avec une section critique, le prochain thread a obtenir la section critique n'est pas prédictible. - les sections critiques sont plus légères (pas d'objet noyau) et plus rapides à acquérir / relacher.
Arnaud
manuelleclerc
Christophe Lephay a écrit :
Manuel Leclerc wrote:
> Jean-François GAZET a écrit : > > > comment déclarer une variable "thread safe" ? > ^^^^^^^^^^^^^^^^^^^^^^ > C'est quoi ?
Une variable qui ne va pas se trouver dans un état indéterminé suite à des accès concurrents...
Je posais la question pour que l'OP précise son problème. Il me semble impossible de lui répondre avec si peu d'information, en particulier à cause du verbe "déclarer" dans sa question.
On pourrait par exemple imaginer qu'il souhaite avoir une instance de sa variable par thread. Si c'est la cas, voir le concept de Thread Local Storage.
Api Win32 : TlsAlloc, TlsFree, TlsGetValue, TlsSetValue http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/tlsalloc.asp
Extension Microsoft au langage C Storage-class attribute : __declspec(thread) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/decla_44.asp
Corrigez moi si je me trompe, mais aucun rapport avec les Mutex et les sections critiques, dans ce cas.
D'où ma question...
-- <Mooby> la résolution de l'année 202 <Mooby> * plus de fautes de frappes
Christophe Lephay a écrit :
Manuel Leclerc wrote:
> Jean-François GAZET a écrit :
>
> > comment déclarer une variable "thread safe" ?
> ^^^^^^^^^^^^^^^^^^^^^^
> C'est quoi ?
Une variable qui ne va pas se trouver dans un état
indéterminé suite à des accès concurrents...
Je posais la question pour que l'OP précise son problème.
Il me semble impossible de lui répondre avec si peu
d'information, en particulier à cause du verbe "déclarer"
dans sa question.
On pourrait par exemple imaginer qu'il souhaite avoir une
instance de sa variable par thread. Si c'est la cas, voir
le concept de Thread Local Storage.
Api Win32 : TlsAlloc, TlsFree, TlsGetValue, TlsSetValue
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/tlsalloc.asp
Extension Microsoft au langage C
Storage-class attribute : __declspec(thread)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/decla_44.asp
Corrigez moi si je me trompe, mais aucun rapport avec les Mutex et
les sections critiques, dans ce cas.
D'où ma question...
--
<Mooby> la résolution de l'année 202
<Mooby> * plus de fautes de frappes
> Jean-François GAZET a écrit : > > > comment déclarer une variable "thread safe" ? > ^^^^^^^^^^^^^^^^^^^^^^ > C'est quoi ?
Une variable qui ne va pas se trouver dans un état indéterminé suite à des accès concurrents...
Je posais la question pour que l'OP précise son problème. Il me semble impossible de lui répondre avec si peu d'information, en particulier à cause du verbe "déclarer" dans sa question.
On pourrait par exemple imaginer qu'il souhaite avoir une instance de sa variable par thread. Si c'est la cas, voir le concept de Thread Local Storage.
Api Win32 : TlsAlloc, TlsFree, TlsGetValue, TlsSetValue http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/tlsalloc.asp
Extension Microsoft au langage C Storage-class attribute : __declspec(thread) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/decla_44.asp
Corrigez moi si je me trompe, mais aucun rapport avec les Mutex et les sections critiques, dans ce cas.
D'où ma question...
-- <Mooby> la résolution de l'année 202 <Mooby> * plus de fautes de frappes