2026-03-20 02:35:24 +08:00
|
|
|
|
# Mutex::try_lock
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
bool try_lock() const;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
尝试获取互斥锁(非阻塞,const 版本)。如果锁可用则立即获取并返回 `true`,否则立即返回 `false` 而不阻塞。
|
|
|
|
|
|
|
|
|
|
|
|
该方法是 `std::lockable` 接口的实现。
|
|
|
|
|
|
|
|
|
|
|
|
**参数:** 无
|
|
|
|
|
|
|
|
|
|
|
|
**返回:** `bool` - 获取成功返回 `true`,锁不可用返回 `false`
|
|
|
|
|
|
|
|
|
|
|
|
**线程安全:** ✅
|
|
|
|
|
|
|
|
|
|
|
|
**复杂度:** O(1)
|
|
|
|
|
|
|
|
|
|
|
|
**示例:**
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
#include "XCEngine/Threading/Mutex.h"
|
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
2026-03-26 01:59:14 +08:00
|
|
|
|
XCEngine::Threading::Mutex mtx;
|
2026-03-20 02:35:24 +08:00
|
|
|
|
volatile bool updated = false;
|
|
|
|
|
|
|
|
|
|
|
|
void TryUpdate() {
|
|
|
|
|
|
if (mtx.try_lock()) {
|
|
|
|
|
|
updated = true;
|
|
|
|
|
|
mtx.unlock();
|
|
|
|
|
|
std::cout << "Update succeeded" << std::endl;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
std::cout << "Update skipped (lock held)" << std::endl;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [Mutex 总览](mutex.md) - 返回类总览
|