| 13 | ThreadAccessChecker::ThreadAccessChecker() = default; |
| 14 | |
| 15 | ThreadAccessCheckerGuard ThreadAccessChecker::guard() { |
| 16 | auto currentThreadId = getCurrentThreadId(); |
| 17 | auto previousThreadId = _threadIdWithCurrentAccess.exchange(currentThreadId); |
| 18 | SC_ABORT_UNLESS(previousThreadId == 0 || previousThreadId == currentThreadId, |
| 19 | "Unsafe multi-threaded access detected"); |
| 20 | |
| 21 | return ThreadAccessCheckerGuard(*this, previousThreadId); |
| 22 | } |
| 23 | |
| 24 | ThreadAccessCheckerGuard::ThreadAccessCheckerGuard(ThreadAccessChecker& checker, ThreadId previousThreadId) |
| 25 | : _checker(checker), _previousThreadId(previousThreadId) {} |
no test coverage detected