1
已解决
薛乘志
初级启示者
初级启示者
与上次介绍的不一样,这次的在C/C++环境都能用,而且不需要高版本的编译器
<pthread.h> 可在几乎所有操作**内使用
这个多线程方法使用了C 阴 间 操作 指针(不会赶快学):https://www.runoob.com/cplusplus/cpp-pointers.html
自己理解吧,有注释
#include <bits/stdc++.h>
#include <pthread.h> //头文件
using namespace std;
void *hw1(void *arg) { //需要将函数定义成指针形式
cout << "Hello World!\n";
return 0; //返回0
}
void *hw2(void *str) {
string *s = (string*)(str); //强制类型转换为string
cout << *s;
return 0;
}
struct dat {
string str;
char n;
};
void *hw3(void *td) {
dat *da = (dat*)(td); //强制类型转换为dat
cout << da->str << da->n; //指针结构体取值需要使用 ->
return 0;
}
int main() {
pthread_t tid;
pthread_create(&tid, NULL, hw1, NULL); //无传参
string str = "Hello World!\n";
pthread_create(&tid, NULL, hw1, (void*)(&str)); //传入string(其他数据类型亦可)
dat da = {"Hello World!", '\n'};
pthread_create(&tid, NULL, hw1, (void*)(&da)); //传入结构体
while (1); //如果不延时,可能还没有输出主函数就结束了
return 0;
}
薛乘志在2021-12-05 13:25:24追加了内容
@沙宸安
薛乘志在2022-01-23 15:10:03追加了内容
谁回复下,我要结帖