Perl Qt 3.1 и потоки - PullRequest
       17

Perl Qt 3.1 и потоки

0 голосов
/ 09 ноября 2011

У меня есть класс, который является Qt :: Object и имеет метод, который создает поток.

Всякий раз, когда я пытаюсь отсоединить или присоединиться к потоку, он вызывает ошибки.

Также emitсигнал не работает.

Пример кода:

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] Ошибка сегментации

1 Ответ

0 голосов
/ 11 ноября 2011

Попробуйте задействовать QThread ... Жаль, что в дистрибутив не входит пример, вам следует запросить его, а пока попробуйте адаптировать http://www.pyside.org/docs/pyside/PySide/QtCore/QThread.html

...