租用问题

质量为本、客户为根、勇于拼搏、务实创新

< 返回租用问题列表

c++ thread如何使用

发布时间:2023-09-15 12:29:08

c++ thread如何使用

C++中的线程可以通过使用std::thread类来创建和管理。下面是一个简单的示例代码,展现了怎样在C++中使用线程:
```cpp
#include
#include
// 线程函数
void threadFunction() {
std::cout << "Hello from thread!" << std::endl;
}
int main() {
// 创建线程对象并传入线程函数
std::thread myThread(threadFunction);
// 主线程继续履行
std::cout << "Hello from main thread!" << std::endl;
// 等待线程履行终了
myThread.join();
return 0;
}
```
在上面的代码中,我们创建了一个名为`myThread`的线程对象,并将`threadFunction`作为线程函数传递给它。然后,主线程继续履行,在履行完`std::cout`语句后,通过调用`myThread.join()`等待线程履行终了。
另外,还可以传递参数给线程函数:
```cpp
#include
#include
// 线程函数
void threadFunction(int n) {
std::cout << "Hello from thread! Number: " << n << std::endl;
}
int main() {
int numThreads = 5;
std::thread threads[numThreads];
// 创建多个线程对象,并传入线程函数和参数
for (int i = 0; i < numThreads; i++) {
threads[i] = std::thread(threadFunction, i);
}
// 主线程继续履行
std::cout << "Hello from main thread!" << std::endl;
// 等待所有线程履行终了
for (int i = 0; i < numThreads; i++) {
threads[i].join();
}
return 0;
}
```
在这个示例中,我们创建了一个包括5个线程对象的数组,并通过循环在每一个线程对象上调用`std::thread`构造函数来创建线程。每一个线程对象都传递了区分的参数给线程函数`threadFunction`。
需要注意的是,在使用线程时需要谨慎处理共享资源的访问,以免竞态条件和数据竞争的问题。可使用互斥量(std::mutex)来对共享资源进行同步访问,还是使用其他线程安全的容器和工具。