0
点赞
收藏
分享

微信扫一扫

c++webserver/第三章 Linux线程开发

yellowone 2022-02-22 阅读 66
c++linuxunix

文章目录

1.线程

1.定义

2.线程(存在意义)

3.共享和非共享

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJI2BY3E-1645463459665)(第三章 Linux线程开发.assets/image-20220221220702357.png)]

4.线程函数

1.创建一个线程
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
/*
	1.	传出参数,线程创建成功后的线程ID.
	2.	设置线程的属性,一般使用默认(NULL)
	3.	函数指针,子线程需要处理的逻辑代码(线程执行的代码)
	4.	给函数的参数
	返回值:成功返回0,失败返回错误号,与errno不同;
		  获取错误号的信号:char *strerror(int errnum);[string.h]
*/

void * callback(void *arg){... return null;}
2.终止线程
void pthread_exit(void *retval);
/*
	参数
	1.	需要传递一个指针,作为一个返回值,可以给pthread_join()中获取到;如果不需要就置NULL;
		!!注意不能返回一个局部变量!!.
*/
3.获取当前线程的线程ID
pthread_t pthread_self(void);
/*
	返回一个ID,长整型(ld);
*/
4.比较两个线程号是否相等
int pthread_equal(pthread_t t1, pthread_t t2);
5.和一个已经终止的子线程进行连接/回收子线程资源
int pthread_join(pthread_t thread, void **retval);
/*
	参数
	1.	需要回收的子线程的ID
	2.	接受子线程退出时的返回值(传出参数,就是exit退出时或者返回的值)
	返回值:成功0,失败返回非0(错误号) ;
*/
6.分离
int pthread_detach(pthread_t thread);
/*
	参数
	1.	需要分离线程的id
	返回值:成功返回0,失败返回-1;
*/
7.线程取消
int pthread_cancel(pthread_t thread);
/*
	1.	需要取消线程的id
	返回值:成功0,失败返回非0(错误号) ;
*/

5.线程属性

1.初始化线程状态
pthread_attr_t attr; //状态结构体
int pthread_attr_init(pthread_attr_t *attr);
2.释放线程属性的资源
int pthread_attr_destroy(pthread_attr_t *attr);
3.获取线程分离的状态属性
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
/*
	参数
	1.	属性变量
	2.	状态:[PTHREAD_CREATE_DETACHED(分离的) | PTHREAD_CREATE_JOINABLE(默认的,不分离)]
*/
4.设置线程分离的状态属性
int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate);

举报

相关推荐

0 条评论