重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、添加线程相关的头文件:#includepthread.h
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了旅顺口免费建站欢迎大家使用!
2、线程创建函数是pthread_create()函数,该函数的原型为:
int pthread_create(pthread_t *thread,pthread_attr_t *attr,void* (*start_routine)(void*),void *arg);
3、线程退出函数是pthread_exit()函数,该函数的原型为:
void pthread_exit(void *retval);
创建线程的示例程序如下:
/*
**程序说明:创建线程函数pthread_create()函数的使用。
*/
#include stdio.h
#include pthread.h
#include unistd.h
#include stdlib.h
#include string.h
//打印标识符的函数
void print_ids(const char *str)
{
pid_t pid; //进程标识符
pthread_t tid; //线程标识符
pid=getpid(); //获得进程号
tid=pthread_self(); //获得线程号
printf("%s pid:%u tid:%u (0x%x)\n",
str,(unsigned int)pid,(unsigned int)tid,(unsigned int)tid); //打印进程号和线程号
}
//线程函数
void* pthread_func(void *arg)
{
print_ids("new thread:"); //打印新建线程号
return ((void*)0);
}
//主函数
int main()
{
int err;
pthread_t ntid; //线程号
err=pthread_create(ntid,NULL,pthread_func,NULL); //创建一个线程
if(err != 0)
{
printf("create thread failed:%s\n",strerror(err));
exit(-1);
}
print_ids("main thread:"); //打印主线程号
sleep(2);
return 0;
}
库函数:顾名思义是把函数放到库里..是别人把一些常用到的函数编完放到一个文件里,供别人用.别人用的时候把它所在的文件名用#include加到里面就可以了.一般是放到lib文件里的。
一般是指编译器提供的可在c源程序中调用的函数。可分为两类一类是c语言标准规定的库函数一类是编译器特定的库函数。
由于版权原因库函数的源代码一般是不可见的但在头文件中你可以看到它对外的接口。什么是库函数语言的语句十分简单如果要使用语言的语句直接计算sin或cos函数就需要编写颇为复杂的程序。因为语言的语句中没有提供直接计算sin或cos函数的语句。又如为了显示一段文字我们在语言中也找不到显示语句只能使用库函数printf。
语言的库函数并不是语言本身的一部分它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序。的库函数极大地方便了用户同时也补充了语言本身的不足。事实上在编写语言程序时应当尽可能多地使用库函数这样既可以提高程序的运行效率又可以提高编程的质量。
·线程创建
函数原型:int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);
返回值:若是成功建立线程返回0,否则返回错误的编号。
形式参数:pthread_t *restrict tidp要创建的线程的线程id指针;
const pthread_attr_t *restrict attr创建线程时的线程属性;
void* (start_rtn)(void)返回值是void类型的指针函数;
void *restrict arg start_rtn的形参。 =====这个地方就可以传参数,
注意,这个地方是个指针,要想传多个参数,可以定义一个结构体,把要传的参数包起来,传结构体的地址就ok
是的。
多线程程序中,线程安全是必须要考虑的因素。C语言中大部分函库函数都是线程安全的,但是也有几个常用函数是线程不安全的,也叫不可重入函数。之所线程不安全,是因为这些系统函数使用了某些全局或者静态变量。
我们知道,全局变量和静态变量分别对应内存中的全局变量区和静态存储区,这些区域都是可以跨函数跨线程访问的。
函数就是完成一定功能的一段代码
主函数就是 main 函数
int main(void)
{
}
或
int main(int argc, char *argv[])
{
}
main函数是c程序里必不可少的,程序从这里开始运行。
被调用函数就是某一个地方调用到的函数呗,c程序就是通过函数调用方式来运行的
库函数就是预先编制好的一些函数,完成特定的功能
比如随编译器一起提供的库函数 有数学运算的,有关输出的,文件操作的,等等
在程序中只需要通过声明直接调用就可以了
还有一些库函数是其他机构编写的完成一些特定的功能 比如早年的xlib是一个很有名的在16位操作系统下完成屏幕图像处理的函数库,还有现在C++里的STL不用说了吧,太有名了已经是C++语言里的组成部分了。