您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制SystemC-sc_event 正文
SystemC-sc_event

SystemC-sc_event

点击数:7307 次   录入时间:01-19 07:01:58   整理:http://www.55dianzi.com   电脑-单片机-自动控制

      sc_event可以用来定义一个事件,SC_THREAD进程可以采用wait( const sc_event&)、wait( sc_event_or_list&)、wait( sc_event_and_list&)来将进程挂起等待事件发生后将进程重新激活。

      sc_event的定义如下:

  1. class sc_event  
  2. {  
  3. publIC:  
  4. sc_event();  
  5. ~sc_event();  
  6. void notify();  
  7. void notify( const sc_time& );  
  8. void notify( double , sc_time_unit );  
  9. void CANcel();  
  10. sc_event_or_list†& operator| ( const sc_event& ) const;  
  11. sc_event_and_list†& operator& ( const sc_event& ) const;  
  12. private:  
  13. // DISAbLED  
  14. sc_event( const sc_event& );  
  15. sc_event& operator= ( const sc_event& );  
  16. }; 

      当一个事件发生,它总是通过notify(…)函数通知所有等待该事件的进程。notify()表示事件立即发生即立刻发送事件通知,而notify( const sc_time& )和notify( double , sc_time_unit )则表示在所给定的时间后发送事件通知。如果时间为0,则时间将在一个△时间后发送事件通知,cancel()则取消前面所有因notify(…)调用而等待发送的通知。

      实际上,一个事件只能有一个等待发送的通知。更晚发生的通知总是被更近发生的通知所取代。比如,我们顺序执行以下代码:

      sc_event e;
      e.notify(SC_ZERO_TIME); // 一个△时间后发送事件通知
      e.notify(1, SC_NS); // 因为前一个通知更早,因此这个通知不起作用。
      e.notify(); // 立即通知,该通知使得e.notify(SC_ZERO_TIME)不再起作用

      又比如下面的代码:

      e.notify(2, SC_NS); //2ns后发送事件通知
      e.notify(3, SC_NS); //因为前一个通知更早,因此这个通知不起作用。
      e.notify(1, SC_NS); // 取消所有前面的e.notify(2, SC_NS)
      e.notify(SC_ZERO_TIME); //一个△时间后发送事件通知,取消所有前面的事件通知。




本文关键字:暂无联系方式电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制