#include <sc_join.h>
Public メソッド | |
sc_join () | |
virtual | ~sc_join () |
void | add_process (sc_process_handle process_h) |
int | process_count () |
virtual void | signal (sc_thread_handle thread_p, int type) |
void | wait () |
void | wait_clocked () |
Protected メソッド | |
void | add_process (sc_process_b *process_p) |
Protected 変数 | |
sc_event | m_join_event |
int | m_threads_n |
フレンド | |
class | sc_process_b |
class | sc_process_handle |
sc_core::sc_join::sc_join | ( | ) | [inline] |
void sc_core::sc_join::add_process | ( | sc_process_handle | process_h | ) |
sc_join.cpp の 82 行で定義されています。
00083 { 00084 sc_thread_handle thread_p; // Thread within process_h. 00085 00086 thread_p = process_h.operator sc_thread_handle(); 00087 if ( thread_p ) 00088 { 00089 m_threads_n++; 00090 thread_p->add_monitor( this ); 00091 } 00092 else 00093 { 00094 SC_REPORT_ERROR( SC_ID_JOIN_ON_METHOD_HANDLE_, 0 ); 00095 } 00096 }
int sc_core::sc_join::process_count | ( | ) | [inline] |
void sc_core::sc_join::signal | ( | sc_thread_handle | thread_p, | |
int | type | |||
) | [virtual] |
sc_core::sc_process_monitorを再定義しています。
sc_join.cpp の 109 行で定義されています。
00110 { 00111 switch ( type ) 00112 { 00113 case sc_process_monitor::spm_exit: 00114 thread_p->remove_monitor(this); 00115 if ( --m_threads_n == 0 ) m_join_event.notify(); 00116 break; 00117 } 00118 }
void sc_core::sc_join::wait | ( | ) | [inline] |
void sc_core::sc_join::wait_clocked | ( | ) | [inline] |
void sc_core::sc_join::add_process | ( | sc_process_b * | process_p | ) | [protected] |
sc_join.cpp の 65 行で定義されています。
00066 { 00067 sc_thread_handle handle = DCAST<sc_thread_handle>(process_p); 00068 assert( handle != 0 ); 00069 m_threads_n++; 00070 handle->add_monitor( this ); 00071 }
friend class sc_process_b [friend] |
friend class sc_process_handle [friend] |
sc_event sc_core::sc_join::m_join_event [protected] |
int sc_core::sc_join::m_threads_n [protected] |