aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src/shared')
-rw-r--r--arch/x86_64/src/shared/mutex.cpp17
1 files changed, 3 insertions, 14 deletions
diff --git a/arch/x86_64/src/shared/mutex.cpp b/arch/x86_64/src/shared/mutex.cpp
index 65cd095..6598255 100644
--- a/arch/x86_64/src/shared/mutex.cpp
+++ b/arch/x86_64/src/shared/mutex.cpp
@@ -4,24 +4,13 @@ namespace teachos::arch::shared
{
auto mutex::lock() -> void
{
- while (true)
+ while (!try_lock())
{
- if (!locked.exchange(true, std::memory_order_acquire))
- {
- return;
- }
+ // Nothing to do
}
}
- /**
- * @brief Try to lock the mutex (non-blocking)
- *
- * @return true if lock has been acquired and false otherwise
- */
auto mutex::try_lock() -> bool { return !locked.exchange(true, std::memory_order_acquire); }
- /**
- * @brief Unlock the mutex
- */
auto mutex::unlock() -> void { locked.store(false, std::memory_order_release); }
-} // namespace teachos::arch::shared \ No newline at end of file
+} // namespace teachos::arch::shared