docs: update memory and threading API docs
This commit is contained in:
@@ -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;
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
Reference in New Issue
Block a user