问题标题: C/C++多线程(devc++低版本可用)

1
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追加了内容

谁回复下,我要结帖


0
0
我要回答