私はsystemcでイベント生成を理解しようとしています。私はそれがコンストラクタのスレッド登録の順序に依存することを発見しました。システムでのイベント生成
#include <systemc.h>
SC_MODULE(EventTest){
sc_event ev1;
void p1(){
ev1.notify();
ev1.notify(0, SC_NS);
}
void p2(){
wait(ev1);
cout<<"ev1 is activated at "<<sc_time_stamp()<<endl;
wait(ev1);
cout<<"ev1-2 is activated at "<<sc_time_stamp()<<endl;
}
SC_CTOR(EventTest){
SC_THREAD(p1);
SC_THREAD(p2);
}
};
int sc_main(int argc, char *argv[]){
EventTest d("d");
sc_start();
return 1;
}
出力:ev1 is activated at 0 s
私はSC_CTOR
に変更した場合に>
SC_THREAD(p2);
SC_THREAD(p1);
は、出力されます>
ev1 is activated at 0 s
ev1-2 is activated at 0 s
誰かが登録順に影響しない方法を教えてくださいイベントの生成?