开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:线程函数传参】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/11059
线程函数传参
内容介绍:
一、验证线程函数传参
二、创建线程一传参
一、验证线程函数传参
在创建线程的时候,void*arg参数是给线程函数传参的,是通用类型的指针,4个字节。
也就是说给线程函数传参的时候只能传四个字节,可以传输地址亦或是一个整数,整数也是四个字节。
在创建线程一的时候传输“hello,world”传一个指针进去,此时的arg就指向h;一旦创建线程成功,hello,word这个字符串会给形参arg赋值。此时 进行打印字符串。
Printf(“%s\n,(char*)arg);打印的时候需要注意,因为arg是通用指针,所以将其强制转换成字符指针,进行打印。
二、创建线程一传参
在创建线程二的时候,定义一个整型变量,int num=100;将num传进去,也是四个字节,传num的地址也可以。
他的形参是一个指针,也可以容纳下四个字节。将其打印,将指针强制转换成整型,最好传输地址。
注意!!num是指针类型,但是你将其转换成整数,进行强制类型转换。(Void*)num。将while(1)打开,否则进程很快结束。
编辑器中输入./pthread可以看到100和hello word都已经被打印出来了。说明在创建线程的时候可以给线程传参。
最好传递地址,将(void*)num改为&num,取num的地址给他,arg是num的地址,将(int)arg强制转换为整型指针,
改为:*((int*)arg))即可。以上则为线程函数传参。