00001 #include <j2k/Fred/Standard.hpp> 00002 #include <j2k/nto/MsgThread.hpp> 00003 #include <j2k/nto/TimerPulse.hpp> 00004 #include <j2k/nto/Message.hpp> 00005 00006 class T1 : public MsgThread 00007 { 00008 public: 00009 00010 int id; 00011 pid_t p; 00012 00013 T1() : MsgThread( "T1" ) 00014 { 00015 p = pid; 00016 } 00017 00018 void run() 00019 { 00020 int i = 100; 00021 while( 1 ) 00022 { 00023 printf( "1" ); 00024 Message m( i++ ); 00025 send( "T2", m ); 00026 Message m2 = receive( id ); 00027 00028 printf( "[%d|%d]", m.getNumber(), m2.getNumber() ); 00029 } 00030 } 00031 }; 00032 00033 class T2 : public MsgThread 00034 { 00035 public: 00036 00037 pid_t p; 00038 00039 T2() : MsgThread( "T2" ) 00040 { 00041 p = pid; 00042 } 00043 00044 int id; 00045 00046 00047 void run() 00048 { 00049 int i = 1000; 00050 while( 1 ) 00051 { 00052 printf( "2" ); 00053 Message m( i++ ); 00054 send( "T1", m ); 00055 Message m2 = receive( id ); 00056 00057 printf( "[%d|%d]", m.getNumber(), m2.getNumber() ); 00058 } 00059 } 00060 }; 00061 00062 int main() 00063 { 00064 T1 a; 00065 T2 b; 00066 00067 a.start(); 00068 b.start(); 00069 00070 a.id = (int)b.p; 00071 b.id = (int)a.p; 00072 00073 a.join(); 00074 b.join(); 00075 00076 for(;;) { 00077 printf( "M" ); 00078 sched_yield(); 00079 } 00080 00081 return 0; 00082 }