[信息和通信]Linux多线程编程
Linux多线程编程
POSIX标准
POSIX的诞生与Unix的发展密不可分
各制造商为Unix的开发贡献了力量,制作了Unix的版本
混乱会给软件的可移植性带来很大的困难,也会给Unix带来
发展极为不利
POSIX
可移植操作系统界面:可移植操作
系统接口
电气和电子工程师协会(Institute of Electrical
和电子工程,IEEE )开发的
在UNIX环境中提高APP应用程序的可移植性
许多其他操作系统,如微软
Windows NT均支持POSIX标准
介绍POSIX线程库Pthreads
介绍POSIX线程库Pthreads
IEEE POSIX标准p1003.1c(Pthreads )定义了一系列处理线程的c语言
语言类型的API。
POSIX线程是线程的POSIX标准,它定义了一组用于创建和处理线程的API
在Linux上,线程通常被认为是“轻量级进程”。
Linux创建过程中使用的函数是fork (或vfork )。 创建线程
管理和管理,Linux可以使用POSIX线程库pthreads提供的APIs。
Linux提供的多线程和多进程运行环境的主要目的是提高系统资源的利用率
率和任务的同时或并行性。
对于Windows操作系统,Pthreads也存在开放源代码版本,称为
对于pthreads-win32
POSIX pthreads库
POSIX pthreads库
创建线程
用于创建POSIX pthreads线程库中提供的线程的函数如下
pthread_create (,函数的原型如下:
int pthread _ create (pthread _ t * thread,
pthread_attr_t * attr,
void*(start_routine ) ) void * )、
void * arg;
第一个参数是pthread_t类型的指针,该指针指向要保存的指针
标记线程创建成功后创建的线程
第二个参数指示创建的线程可以具有的属性
第三个参数是指向线程实现函数的函数指针
第四个参数arg是void *类型,该参数指向实际线程处理函数
在运行时计算所需的参数
POSIX pthreads库(续)
POSIX pthreads库(续)
线程结束
线程处理函数可以显式调用pthread_exit ()结束线
程执行。 pthread_exit ()函数的函数原型如下:
voidpthread_exit(void*retval;
参数是线程的返回值
exit (不容易使用函数退出线程。 exit ) )时
函数实际上是整个过程的结束,其他线程也将遵循该过程
消亡消灭
POSIX pthreads库(续)
POSIX pthreads库(续)
等待线程结束
线程创建完成后,可以创建并使用线程的线程
pthread_join ()函数等待创建的线程结束。
pthread_join ()函数等待创建线程的线程执行
前往想等待的子线程。 pthread_join ()函数的函数原型如下:
intPthread_join(Pthread_tth,void **thread_return );
第一个参数th是等待的线程的标志
如果thread_return不为空,则thread_return将指向th返回
中选择所需的墙类型
调用pthread_join ()函数的目的是释放相关的内存资源
POSIX pthreads库(续)
POSIX