Bonjour,

j'aurais besoins de votre aide pour résoudre un problème de concurrence.

J'ai un objet (SerialComm) qui représente une communication avec le port série. Sur cet objet, je peux appeler read(...) et write(...). Du coup, j'utilise deux Locks pour empêcher que plusieurs Thread lisent ou écrivent en même temps. Jusque là, pas de soucis.

Maintenant, je voudrais qu'un Thread puisse avoir un accès exclusif sur l'objet. C'est a dire qu'un Thread puisse dire "maintenant l'objet SerialComm est sous mes ordres" et qu'a partir de ce moment, aucun autre Thread ne peut écrire ou lire tant que le Thread précédent n'as pas relâcher l'objet. Est-ce que c'est possible? Si oui comment?

Un bout de code à quoi ça ressemble maintenant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
public class SerialComm
{
  	private final Lock lockRead = new ReentrantLock();
  	private final Lock lockWrite = new ReentrantLock();
 
  	...
 
  	public int read()
  	{
  	  	lockRead.lock();
  	  	try
  	  	{
  	  	  	...
  	  	}
  	  	finally
  	  	{
  	  	  	lockRead.unlock();
  	  	}
 	}
}
Merci d'avance pour votre aide.