| 151 | } |
| 152 | |
| 153 | void echo_thread(int count, NotifyBus* bus, int my_event, int peer_event) |
| 154 | { |
| 155 | int i = 0; |
| 156 | |
| 157 | EventHandle handle; |
| 158 | SyncData sync_data; |
| 159 | |
| 160 | sync_data.sync.lock(); |
| 161 | |
| 162 | handle.func = handle_event; |
| 163 | handle.argument = &sync_data; |
| 164 | |
| 165 | bus->Book(my_event, handle); |
| 166 | |
| 167 | EventData data; |
| 168 | |
| 169 | data.event = peer_event; |
| 170 | |
| 171 | if(my_event == 0) |
| 172 | { |
| 173 | // make sure other threads have initialized already |
| 174 | sleep(1); |
| 175 | data.data = -1; |
| 176 | bus->Send(peer_event, &data); |
| 177 | } |
| 178 | |
| 179 | std::cout << "My event: " << my_event << "\n"; |
| 180 | |
| 181 | while(true) |
| 182 | { |
| 183 | sync_data.sync.lock(); |
| 184 | |
| 185 | std::cout << "send event to: " << peer_event << " # " << i << "\n"; |
| 186 | |
| 187 | data.data = i; |
| 188 | |
| 189 | bus->Send(peer_event, &data); |
| 190 | |
| 191 | if(i++ == count) |
| 192 | break; |
| 193 | } |
| 194 | |
| 195 | std::cout << "Total received: " << count << " events\n"; |
| 196 | } |
| 197 | |
| 198 | void test_threads(void) |
| 199 | { |