| #include "pseudo_barrier.h" | |
| #include <cstdlib> | |
| #include <thread> | |
| // Use low-level exit functions to achieve predictable timing. | |
| #if defined(__linux__) | |
| #include <sys/syscall.h> | |
| #include <unistd.h> | |
| void exit_thread(int status) { syscall(SYS_exit, status); } | |
| void exit_process(int status) { syscall(SYS_exit_group, status); } | |
| #else | |
| #error Unimplemented | |
| #endif | |
| pseudo_barrier_t g_barrier; | |
| void thread_func() { | |
| pseudo_barrier_wait(g_barrier); | |
| exit_thread(42); | |
| } | |
| int main() { | |
| pseudo_barrier_init(g_barrier, 2); | |
| std::thread(thread_func).detach(); | |
| pseudo_barrier_wait(g_barrier); | |
| exit_process(47); | |
| } |