Thread Threads::shared ::IO:.Select (1 answers)
Opened by hummer at 2015-11-02 06:39

hummer
 2015-11-02 06:39
#182749 #182749
User since
2013-06-12
22 Artikel
BenutzerIn
[default_avatar]
Guten Morgen,

ich bitte euch schon wieder einmal um Hilfe das ich glaube ein kleines Verständisprolem habe.

Aber ich hoffe das Ihr mir schnell weiterhelfen könnt.

Situation:
In einem eigenen OO-Perl Modul wird eine Kommunikation zu mehreren Sensoren gleichen Typs aufgebaut. (IO::Socket, IO:.Select).
Einstellungen wie, IP Adresse, Port, und Rückgabewerte des Sensors, werden in einem Object abgespeichert.
Auch die IO::SOCKET::INET einstellungen werden hierbei im Object abgespeichert:

Code: (dl )
1
2
3
4
5
6
  my $class = shift;
my $self = {...};
bless ($self, $class);

$Client = new IO::Socket::INET ( ...);
$self->{Client} = $Client;



sowie tso gut, funktioniert auch alles super.

nun möchte ich gern die Daten alle in einer GUI angeigt bekommen.
Da die abfrage der MEsswerte in einem eigenem Thread laufen soll, und damit unabhängiog von der GUI stehe ich for folgendem Problem:


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  use threads;
use threads::shared;
my @threads;
my $Datatransfer:shared;

push @threads, threads->create(\&LoggingThread);

sub LoggingThread{

my $Data1 = test(); # Test ob Alle Daten übergeben werden,
say Dumper( $Data1 ); # Ja alle Daten werden als Array ref übergeben.

$Datatransfer = shared_clone($Data1);

# => Fehlermeldung: "Unsupported ref type: GLOB"
}



Die struktur sieht folgendermaßen aus:
Code: (dl )
1
2
3
4
5
6
  my @AoH = (
'Client' => bless( \*Symbol::GEN2, 'IO::Socket::INET' ),
'Name' => '...',
'IP' => '...'
...
);


sobald ich die 'Client' Zeile lösche funktionert alles, hätte aber keine Möglichkeit mehr Daten zu senden.

Könnt ihr mir helfen?

Vielen Dank

View full thread Threads::shared ::IO:.Select