+ -
当前位置:首页 → 问答吧 → perl线程间的数据共享好不习惯。。

perl线程间的数据共享好不习惯。。

时间:2010-10-21

来源:互联网

本帖最后由 maxxfire 于 2010-10-21 18:32 编辑

搞了个thread::shared,但是还不能共享对象。。这我就认了,但是连这样也出错:

.
  1. #!/usr/bin/perl -w
  2. use threads;
  3. use threads::shared;

  4. our $main;
  5. our $mainid : shared;

  6. $SIG{USR1} = sub {
  7.     print "main catch..\n";
  8.     exit(-1);
  9. };

  10. END {
  11.     print "88\n";
  12. };

  13. sub ThreadFunc() {
  14.     sleep(2);
  15.     threads->object($mainid )->kill('SIGUSR1');

  16.     while(1) { sleep(1); print "sub\n"; }
  17. }

  18. sub main () {
  19.     $mainid = threads->tid();

  20.     our $hTh = threads->create( \&ThreadFunc );

  21.     sleep(5);

  22.     while(1) { sleep(1); print "main\n"; }

  23. }

  24. main();
复制代码
运行报错:
Thread 1 terminated abnormally: Can't call method "kill" on an undefined value at ./th2 line 19.

我只是想在子线程中发个信号给主线程。。。有这么困难吗??

作者: maxxfire   发布时间: 2010-10-21

回复 maxxfire


    发错了吧,定义的是USR1发的是SIGUSR1

作者: 珞水的大叔   发布时间: 2010-10-22