docs: update memory and threading API docs

This commit is contained in:
2026-03-20 02:35:24 +08:00
parent c5b17239ca
commit fd792b7df1
103 changed files with 2485 additions and 673 deletions

View File

@@ -1,35 +1,45 @@
# Thread::Join
```cpp
void Join()
void Join();
```
等待线程结束并回收其资源。调用线程将被阻塞,直到目标线程完成执行
等待线程执行完成并回收其资源。调用 `Join()` 会阻塞当前线程,直到目标线程结束运行。如果目标线程已经结束或从未启动,则此调用立即返回
`Join()` 只能调用一次。在调用 `Join()` 后,`std::thread` 对象不再代表任何线程,不能再次调用 `Join()``Detach()`
析构函数会自动调用 `Join()`,确保线程对象销毁前等待线程结束。
**注意:** 如果线程已经被分离Detach或已经 Join 过,调用此方法将导致未定义行为。
**参数:**
**返回:**
**复杂度** O(n)n 为目标线程的执行时间
**注意:**
- 如果线程已经被分离Detach或已经 Join 过,调用此方法将导致未定义行为。
- 建议在使用完 Thread 对象后始终调用 Join 或 Detach。
**线程安全**
**示例:**
```cpp
Thread worker;
worker.Start([]() {
for (int i = 0; i < 5; ++i) {
printf("Working...\n");
Thread::Sleep(100);
}
}, "WorkerThread");
#include "XCEngine/Threading/Thread.h"
#include <iostream>
printf("Main thread waiting...\n");
worker.Join();
printf("Worker thread finished\n");
using namespace XCEngine::Threading;
int main() {
Thread t;
t.Start([]() {
for (int i = 0; i < 3; ++i) {
std::cout << "Working... " << i << std::endl;
Thread::Sleep(100);
}
}, "WorkerThread");
std::cout << "Waiting for thread to complete..." << std::endl;
t.Join();
std::cout << "Thread completed!" << std::endl;
return 0;
}
```
## 相关文档