cpp中将含有指针形式传递参数的函数添加到多线程中 代码示例
时间: 2024-03-10 10:44:47 浏览: 57
C# 多线程 参数传递 示例
3星 · 编辑精心推荐
当函数的参数是指针类型时,我们可以直接将指针传递给 `std::thread` 类的构造函数,但需要注意的是,在多个线程中访问同一个指针时,需要进行同步,以避免出现数据竞争的问题。下面是一个示例代码,展示了如何将含有指针形式传递参数的函数添加到多线程中:
```c++
#include <iostream>
#include <thread>
void threadFunc(int* ptr) {
(*ptr)++;
}
int main() {
int val = 10;
std::thread t(threadFunc, &val);
t.join();
std::cout << "Value: " << val << std::endl;
return 0;
}
```
在上面的代码中,我们定义了一个函数 `threadFunc`,它的参数是一个 `int` 类型的指针。在 `main` 函数中,我们创建了一个 `int` 类型的变量 `val`,并将其初始化为 `10`。然后,我们使用 `std::thread` 类来创建一个新的线程,并将 `val` 的地址作为参数传递给 `threadFunc` 函数。在线程中,我们通过指针访问 `val` 的值,并将其加 1。最后,我们调用 `join()` 函数来等待线程执行完成,并输出 `val` 的值,确认其已经被修改为 `11`。
需要注意的是,在多个线程中访问同一个指针时,需要使用互斥锁等同步机制,以避免出现数据竞争的问题。
阅读全文