00001 phase-mutex: 00002 lock : constructeur (thread I) 00003 phase_code apres "for" debut (thread II) 00004 unlock : deliver (thread III) 00005 if ( type != NEW, INIT ) 00006 if(mess_phase == curphase) { 00007 if (cur_get->sendflag == 0) XX 00008 00009 if ( type == NEW ) { 00010 start_join( datapt, mess_size ); XX 00011 00012 broadcast fin (thread I) 00013 00014 trylock : phase_code apres timeouts (thread II) 00015 00016 if (curphase != 1) phase_actions(); 00017 pthread_mutex_trylock(&phase_mutex); 00018 00019 00020 recv_mutex 00021 lock : deliver (thread III) 00022 if(type == MESS || type == CMD || type == ACK || type == FAULT ) { 00023 XX 00024 else if( type == NACK ) { 00025 XX 00026 phase_actions debut (thread II) 00027 phase_update debut (thread II) 00028 00029 00030 unlock : constructeur (thread I) 00031 deliver (thread III) 00032 if(type == MESS || type == CMD || type == ACK || type == FAULT 00033 fin if(mess_phase == curphase) { 00034 fin if(mess_phase == curphase+1) { 00035 fin else 00036 else if( type == NACK ) 00037 if (mess_phase == curphase) { 00038 if ( cur_get->sendflag == 0 ) { 00039 XX 00040 else 00041 XX 00042 else if (mess_phase == curphase - 1) 00043 if 00044 XX 00045 else 00046 XX 00047 else if (mess_phase == curphase - 1) 00048 XX 00049 else 00050 XX 00051 phase_actions fin (thread II) 00052 phase_update fin (thread II) 00053 00054 send_mutex : 00055 lock : broadcast debut (thread I) 00056 phase_code avant send_buffer_advance() (thread II) 00057 get_first_to_send debut (thread II) 00058 00059 unlock :constructeur (thread I) 00060 broadcast fin(thread I) 00061 phase_code apres send_buffer_advance() (thread II) 00062 get_first_to_send fin (thread II) 00063 00064 00065 Thread III : 00066 no_prop_channel: read_socket 00067 total_order_channel: deliver 00068 curphase (read) 00069 prev_get 00070 cur_get 00071 next_get 00072 status 00073 00074 thread II : 00075 total_order_channel: phase_code 00076 phase_actions 00077 phase_update 00078 get_first_to_send 00079 send_buffer_advance 00080 thread I : 00081 total_order_channel: constructeur 00082 broadcast