48 lines
1.2 KiB
Markdown
48 lines
1.2 KiB
Markdown
# Thread::Join
|
||
|
||
```cpp
|
||
void Join();
|
||
```
|
||
|
||
等待线程执行完成并回收其资源。调用 `Join()` 会阻塞当前线程,直到目标线程结束运行。如果目标线程已经结束或从未启动,则此调用立即返回。
|
||
|
||
`Join()` 只能调用一次。在调用 `Join()` 后,`std::thread` 对象不再代表任何线程,不能再次调用 `Join()` 或 `Detach()`。
|
||
|
||
析构函数会自动调用 `Join()`,确保线程对象销毁前等待线程结束。
|
||
|
||
**注意:** 如果线程已经被分离(Detach)或已经 Join 过,调用此方法将导致未定义行为。
|
||
|
||
**参数:** 无
|
||
|
||
**返回:** 无
|
||
|
||
**线程安全:** ❌
|
||
|
||
**示例:**
|
||
|
||
```cpp
|
||
#include "XCEngine/Threading/Thread.h"
|
||
#include <iostream>
|
||
|
||
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;
|
||
}
|
||
```
|
||
|
||
## 相关文档
|
||
|
||
- [Thread 总览](thread.md) - 返回类总览
|