0

我有一个类是 Qt::Object 并且有一个创建线程的方法。

每当我尝试分离或加入线程时,它都会出现故障。

发射信号也不起作用。

示例代码是:

package MyThread;

use threads;

use Qt;
use Qt::isa qw(Qt::Object);
use Qt::signals
 imageResRecieved   => ['int', 'int'];

sub NEW
{
    shift->SUPER::NEW(@_[0..2]);
    if ( name() eq "unnamed" ) {
        setName("MyThread" );
    }
}

sub getWidthHeight{
   my ($seq, $frameNum) = @_;  
   my ($width, $height) = (1920, 1080);
   sleep(2);
   print "Emitting\n";
   emit imageResRecieved($width, $height);
   print "AFTER Emit\n";
}


sub getImageWidthThread{
  my $thr = threads->create('getWidthHeight', @_);

  $thr->detach(); # This causes seg faults 
}

use MyThread;
use Qt::slots
    handleImageResSignal    => ['int', 'int'];

    my $mythread = MyThread();
    Qt::Object::connect($irt, SIGNAL "imageResRecieved(int, int)", this, SLOT "handleImageResSignal(int, int)");
    $mythread->getImageWidthThread("$GLOBAL{DIR}/$GLOBAL{PAT}", $seq_start);

    sub handleImageResSignal{
      my ($width, $height) = @_; 
      print "\n Emitted ${width} ${height} \n";
}

我得到的错误是:

尝试释放不存在的共享字符串“39631808”,Perl 解释器:0x2879910。

[1] 分段错误

4

1 回答 1

0

尝试涉及 QThread ...太糟糕了,分发没有附带示例,您应该请求一个,同时尝试调整http://www.pyside.org/docs/pyside/PySide/QtCore/QThread.html

于 2011-11-11T04:56:55.873 回答