Programmation Concurrente (2016)


Rejoignez le forum, c’est rapide et facile

Programmation Concurrente (2016)
Programmation Concurrente (2016)
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

Question sur la synchronisation

3 participants

Aller en bas

Question sur la synchronisation Empty Question sur la synchronisation

Message par ren12 Mar Oct 11, 2016 4:32 pm

Bonjour,

Lorsqu'un thread 1 essai d'accéder à une portion de code protégé par un synchronized ou un lock, et qu'un autre thread 2 est dans ce bloc. Lorsque le thread 1 se bloque, à l'entrée de la section critique, est-il endormi dans l'object synchronisé, et donc ne pourra reprendre qu'après un notify() ou notifyAll(), ou bien pourra reprendre l'exécution à la sortie du bloc par le thread 2 ou le unlock sans être réveillé explicitement ? Si je formule autrement, un thread peut-il se retrouver dans la file d'attente d'un object synchronisé sans l'execition du wait() ?

Merci.

Cordialement

ren12

Posts : 7
Join date : 11/10/2016

Revenir en haut Aller en bas

Question sur la synchronisation Empty Re: Question sur la synchronisation

Message par Admin Jeu Oct 13, 2016 8:00 pm

Votre question n'est pas claire. Seul un UNIQUE fil d'exécution peut être actif dans un bloc synhronized. Un thread bloqué sur wait() n'est pas actif.

Cela répond-il à votre question?

Admin
Admin

Posts : 55
Join date : 24/08/2016

https://3i001-2016.forumactif.org

Revenir en haut Aller en bas

Question sur la synchronisation Empty Re: Question sur la synchronisation

Message par ren12 Jeu Oct 13, 2016 8:07 pm

Ce que je veux dire, c'est par exemple le thread 1 exécute un bloc synchronized et commute au milieu du bloc d'instruction. Un thread 2 prend le processeur et essai d'exécuter ce même bloc synchronized, qu'advient-il de ce thread 2 vu que le thread 1 n'a pas encore terminé le bloc et n'a pas laché le verroux ? Est-il mis dans la file d'attente de l'objet synchronisé ?

ren12

Posts : 7
Join date : 11/10/2016

Revenir en haut Aller en bas

Question sur la synchronisation Empty Re: Question sur la synchronisation

Message par Admin Jeu Oct 13, 2016 8:54 pm

J'ai dit «Un seul processus actif dans un synchronized» Donc soit le thread 1 est sur un wait (et il n'est pas actif) soit il est en dehors d'un wait, même commuté et il est actif. Ici, "actif" ne veut pas dire "j'ai le processeur".

Est-ce plus clair? ;-)

Admin
Admin

Posts : 55
Join date : 24/08/2016

https://3i001-2016.forumactif.org

Revenir en haut Aller en bas

Question sur la synchronisation Empty Re: Question sur la synchronisation

Message par ren12 Jeu Oct 13, 2016 9:09 pm

Oui, j'ai compris cela, mais mais ma question porte sur le thread 2 dans le cas que je viens d'évoquer. Comme vous le dites, le Thread 1, même s'il commute au milieu du bloc synchronized, il est actif. C'est le seul actif dans le synchronized, le Thread 2 ne peut donc pas entrer dans le synchronized. Donc que se passe t-il pour le Thread 2 qui tente d'entrer dans un bloc synchronized déjà occupé par l'activité du Thread 1 ?

Merci

ren12

Posts : 7
Join date : 11/10/2016

Revenir en haut Aller en bas

Question sur la synchronisation Empty Re: Question sur la synchronisation

Message par Admin Jeu Oct 13, 2016 9:30 pm

haaaaa.... cela signifie que the thread 1 imbrique des synchronized dan sun sens et le thread 2 dans le sens inverse... Vous cherchez les coups :-D.

Dans ce cas, je ne vois qu'une solution: l'interblocage.

Admin
Admin

Posts : 55
Join date : 24/08/2016

https://3i001-2016.forumactif.org

Revenir en haut Aller en bas

Question sur la synchronisation Empty Re: Question sur la synchronisation

Message par ren12 Jeu Oct 13, 2016 9:47 pm

Je vois Smile. Merci pour votre réponse Wink

ren12

Posts : 7
Join date : 11/10/2016

Revenir en haut Aller en bas

Question sur la synchronisation Empty Re: Question sur la synchronisation

Message par nsznajder Ven Oct 28, 2016 11:39 am

Bonjour,

j'avais compris la question de façon beaucoup plus simple...
Je tente une réponse qui me semble correspondre à la question simple initiale : si un Thread 2 veut acquérir le lock alors qu'il n'est pas disponible (parce que le Thread 1 est en train d'exécuter le bloc protégé), alors le Thread 2 est mis en attente jusqu'à ce que le lock soit disponible. Il n'y a pas besoin de le réveiller explicitement. Lorsque Thread 1 sera sorti (ou aura libéré le lock), Thread 2 pourra acquérir le lock qu'il attendait.

Je ne sais pas si cela répond à la question de ren12 mais c'est comme cela que je l'avais comprise!

nsznajder

Posts : 2
Join date : 30/08/2016

Revenir en haut Aller en bas

Question sur la synchronisation Empty Re: Question sur la synchronisation

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum