Hello experts
I have a tricky synchronisation to achieve in one model. Here I have two thread processes, The IInd one is waiting for an event which is notified by Ist thread. Here after the event notification from Ist process, I wait for one delta cycle to allow IInd one to come out of wait and do some stuff before Ist one proceed. But what I am abserving that after the wait in Ist process, in next delta cycle both process becomes ready to run and scheduler may pick them in any order but I want IInd process to run before Ist one. I may use another wait but is there any another way to achieve this ?
Here is one simple examle to show this issue
In the below example, I am getting the following output
P3
P6
I am expecting
P3
P6
#include "systemc.h"
SC_MODULE(event_trial){
public:
sc_event se;
SC_CTOR(event_trial) {
SC_THREAD(process1);
SC_THREAD(process2);
}
void process1(){
wait(SC_ZERO_TIME);
se.notify(SC_ZERO_TIME);
wait(SC_ZERO_TIME);
cout<<"P3"<<endl;
}
void process2(){
wait(se);
cout<<"P6"<<endl;
}
};
int sc_main(int , char**){
event_trial et("et");
sc_start();
return 0;
}
Can anyone suggest a recommended way to achieve the desired output
Thanks
Rahul