barrier via spin lock
| 1836 | |
| 1837 | // barrier via spin lock |
| 1838 | inline static void ggml_critical_section_start(void) { |
| 1839 | int processing = atomic_fetch_add(&g_state_barrier, 1); |
| 1840 | |
| 1841 | while (processing > 0) { |
| 1842 | // wait for other threads to finish |
| 1843 | atomic_fetch_sub(&g_state_barrier, 1); |
| 1844 | sched_yield(); // TODO: reconsider this |
| 1845 | processing = atomic_fetch_add(&g_state_barrier, 1); |
| 1846 | } |
| 1847 | } |
| 1848 | |
| 1849 | // TODO: make this somehow automatically executed |
| 1850 | // some sort of "sentry" mechanism |
no test coverage detected