[POO] Passage d'une instance de classe à un thread
Bonjour,
J'ai une classe dont le constructeur est le suivant:
Code:
1 2 3 4 5 6 7 8
| sub new
{
my ($self) = @_;
my $classe = ref($self) || $self;;
my $this = {};
bless ($this,$classe);
return $this;
} |
Cette classe contient une méthode Start dont l'unique but est d'appeler une autre de ses méthodes (ici read_client) dans un nouveaux thread:
Code:
1 2 3 4
| sub start {
my ($this,$clientSocket) = @_;
$this->{clientThread} = threads->create "read_client",$this,$clientSocket);
} |
Mon problème est que la méthode read_client modifie des attributs de l'instance, et que les modifications ne sont pas "remontée" au programme appelant:
Code:
1 2 3 4 5 6
| my $test = TestClass->new();
test->start($socket)
...
#fin du thread
print $test->{UnAttributModifiéDansLeThread};
#valeure affichée: Pas de modification |
J'imagine que le problème est du à un mauvais passage de la référence sur l'instante au niveau du thread->create. J'ai bien essayé de passer en paramètre \$this et de récupérer la valeur par
Code:
1 2
| my ($refThis,$clientSocket)=@_;
my $this = $$refThis; |
Mais le résultat est le même...
Pourriez vous me débloquer?
Merci de votre aide!!!