199451b44SJordan Rupprecht #include "pseudo_barrier.h" 299451b44SJordan Rupprecht #include <cstdio> 399451b44SJordan Rupprecht #include <thread> 499451b44SJordan Rupprecht 599451b44SJordan Rupprecht volatile uint32_t g_val = 0; 6*7e2ef84fSMichał Górny pseudo_barrier_t g_barrier, g_barrier2; 799451b44SJordan Rupprecht thread_func()899451b44SJordan Rupprechtvoid thread_func() { 999451b44SJordan Rupprecht pseudo_barrier_wait(g_barrier); 10*7e2ef84fSMichał Górny pseudo_barrier_wait(g_barrier2); 1199451b44SJordan Rupprecht printf("%s starting...\n", __FUNCTION__); 1299451b44SJordan Rupprecht for (uint32_t i = 0; i < 10; ++i) 1399451b44SJordan Rupprecht g_val = i; 1499451b44SJordan Rupprecht } 1599451b44SJordan Rupprecht main(int argc,char const * argv[])1699451b44SJordan Rupprechtint main(int argc, char const *argv[]) { 1799451b44SJordan Rupprecht printf("Before running the thread\n"); 1899451b44SJordan Rupprecht pseudo_barrier_init(g_barrier, 2); 19*7e2ef84fSMichał Górny pseudo_barrier_init(g_barrier2, 2); 2099451b44SJordan Rupprecht std::thread thread(thread_func); 2199451b44SJordan Rupprecht 22*7e2ef84fSMichał Górny printf("After launching the thread\n"); 2399451b44SJordan Rupprecht pseudo_barrier_wait(g_barrier); 2499451b44SJordan Rupprecht 25*7e2ef84fSMichał Górny printf("After running the thread\n"); 26*7e2ef84fSMichał Górny pseudo_barrier_wait(g_barrier2); 27*7e2ef84fSMichał Górny 2899451b44SJordan Rupprecht thread.join(); 2999451b44SJordan Rupprecht 3099451b44SJordan Rupprecht return 0; 3199451b44SJordan Rupprecht } 32