Thread kompliziertes Problem (4 answers)
Opened by fritz at 2006-01-12 16:02

fritz
 2006-01-12 16:02
#61855 #61855
User since
2005-10-19
44 Artikel
BenutzerIn
[default_avatar]
Hi liebe Perlgemeinde,

mich plagt folgendes, kompliziertes Problem.


Mein Perl Thread oeffnet waehrend der Abarbeitung eine C Funktion.

Diese C Funktion oeffnet einen zweiten Thread (C Thread)
in dem ebenfalls etwas abgearbeitet wird.

Nach kurzer Zeit will der C Thread dem Perl Thread eine Nachricht zukommen lassen ( 4 Parameter ).

Ich hab es folgendermassen versucht.

C- Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Callback(unsigned int MsgId, unsigned int wParam, long lParam, long clientHandle)
{

 dSP;
 
 ENTER;
   SAVETMPS;
     PUSHMARK(SP);
      XPUSHs(sv_2mortal(newSViv(MsgId)));
     XPUSHs(sv_2mortal(newSViv(wParam)));
XPUSHs(sv_2mortal(newSViv(lParam)));
       XPUSHs(sv_2mortal(newSViv(clientHandle)));
     PUTBACK;
     perl_call_pv("MSP430DLL::callback", G_DISCARD);//
   FREETMPS;
 LEAVE;

}

Aufnahme der Parameter in Perl

Code: (dl )
1
2
3
4
5
sub callback
{
  print "Hi, this is the callback\n";
  print "@_\n";
}


Das Problem ist nun das ich auf den Perl Thread keinen Zugriff bekomme weil dieser ja noch laeuft und ich somit den Interpreter nicht benutzen kann.

Die Fehlermeldung in C lautet:

Unhandled exeption in perl.exe: 0xC0000005: Access Violation

Jetzt meine Frage, wie realisiere ich das?


Hab mir ueberlegt ob es vielleicht moeglich waere aehnlich wie mit
$a = <STDIN>
nicht auf eine Tastatureingabe zu warten sondern auf die Parameter aus C.

Dann waere naemlich der Interpreter von Perl darauf vorbereitet das etwas kommen muss, waehrend er zur Zeit ja nicht damit rechnet das er von C Daten bekommen soll.

Hoffe auf baldige Hilfe

MFG

fritz\n\n

<!--EDIT|esskar|1137082874-->

View full thread kompliziertes Problem