Specman e等到线程完成(非耗时的方法)

时间:2015-12-31 23:04:45

标签: specman e

有没有办法让unit3.thread()在其他两个线程之后运行?

all of
{
    {
        unit1.thread();
    };
    {
        unit2.thread();
    }
};
unit3.thread();

我希望单元1和2中的线程并行运行,并且线程3在完成后运行。但是因为run()不是一个耗时的方法解决方案,如:

$ which pip                                                                                                                                                       Thu Dec 31 17:56:58 EST 2015
/usr/local/bin/pip
$ which python                                                                                                                                                        Thu Dec 31 18:01:09 EST 2015
/usr/local/bin/python
$ pip install flake8                                                                                                                                                  Thu Dec 31 18:01:20 EST 2015
Requirement already satisfied (use --upgrade to upgrade): flake8 in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

不允许。

有没有办法让unit3.thread()等到前一个线程完成?

1 个答案:

答案 0 :(得分:0)

您可以通过在unit1unit2完成时手动触发事件来完成此操作:

extend sys {
   event u1_done;
   event u2_done;
   run() is also {
     all of {
       { unit1.thread(); }
       { unit2.thread(); }
     };
   };
   on @u1_done and @u2_done unit3.thread();
};

然后在unit1unit2完成后发出这些陈述:

emit u1_done;

unit2

emit u2_done;

我现在无法访问Specman,因此语法可能不会出现,但我已经使用过这种技术。