int _tmain(int argc, _TCHAR* argv[]) { try { AC::Event Event(FALSE, TRUE); AC::Thread Thread1(new WaitEvent(Event)); Thread1.Start(); AC::Thread Thread2(new WaitEvent(Event)); Thread2.Start(); Sleep(2000); Event.SetEvent(); Thread1.Wait(); Thread2.Wait(); std::vector<HANDLE> Objects; Objects.push_back(Thread1); Objects.push_back(Thread2); Objects.push_back(Event); int ret = WaitForMultipleObjects(Objects.size(), &Objects[0], TRUE, INFINITE); assert(ret == WAIT_OBJECT_0); } catch(std::exception& ex) { fprintf(stderr, "Exception: %s\n", ex.what()); } return 0; }
int main() { pthread_barrier_init(&B, 0, 2); pthread_t t; pthread_create(&t, NULL, Thread1, NULL); Thread2(0); pthread_join(t, NULL); return 0; }
int main() { pthread_t t; pthread_create(&t, NULL, Thread1, NULL); Thread2(0); pthread_join(t, NULL); pthread_barrier_destroy(&B); return 0; }
int main() { mem = (int*)malloc(100); pthread_mutex_init(&mtx, 0); pthread_t t; pthread_create(&t, NULL, Thread1, NULL); Thread2(0); pthread_join(t, NULL); pthread_mutex_destroy(&mtx); return 0; }