首页 > 代码库 > 第十一章:线程

第十一章:线程

pthread1、引言2、线程概念3、标示进程ID使用pid_t数据类型来表示,线程ID使用pthread_t数据类型来表示。#include <pthread.h>int pthread_equal(pthread_t tid1, pthread_t tid2); // 用来比较两个线程ID是否相等pthread_t pthread_self(void); // 线程用来获取自身的线程ID当线程需要识别以线程ID为标示的数据结构时,pthread_self函数可以和pthread_equal函数一起使用。例如,主线程可能把工作任务放在一个队列中,用线程ID来控制每个工作线程处理哪些作业(如图p289—apue)。主线程把新的作业放到一个工作队列中,由三个线程组成的线程池从队列中移出作业,每个线程并不是任意地处理从队列顶端取出的作业,而是由主线程控制作业的分配,主线程在每个待处理作业的结构中放置处理改作业的线程ID,每个工作线程只能移出标有自己线程ID的作业。4、线程创建#include <pthread.h>int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void), void *restrict arg); // 创建线程成功返回0, 否则返回错误编码当pthread_create创建成功时,由tidp指向的内存单元被设置为新创建线程的线程ID。attr参数用于定制各种不同的线程属性。现在先设置为NULL新创建的线程从start_rtn函数开始运行,该函数只有一个无类型指针参数arg,如果需要向start_rnt传递的参数不止一个,那么需要把这些参数放到一个结构中,然后把这个结构的地址作为arg参数传入示例:pthread_1.cpp

 

第十一章:线程