意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

多线程程序设计(多线程程序设计流程)

来源:恒创科技 编辑:恒创科技编辑部
2024-01-24 04:21:59

1、基本概念

a、线程就是“轻量级”的进程

b、线程与创建它的进程共享代码段和数据段


多线程程序设计(多线程程序设计流程)

c、线程拥有自己的独立的栈。

2、函数学习

1)创建线程

函数名:pthread_create

函数原型:Int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg);

函数功能:在调用进程当中去创建新的线程

所属头文件:<pthread.h>特别注意:编译时必须使用gcc –lpthread

返回值:成功:返回0.失败:返回错误编码

参数说明:Thread:新创建的线程的id。

Attr:待创建线程的属性,一般为空

Start_routine:指定线程要执行的函数(线程的入口函数)。

Arg:线程入口函数的参数,可以为空。

2)等待线程结束

函数名:Pthread_join

函数原型:Int pthread_join(pthread_t thread,void **retval);

函数功能:用于等待线程结束

所属头文件:<pthread.h>特别注意:同样编译时必须使用gcc –lpthread

返回值:成功:返回0.失败:返回错误编码

参数说明:Thread:要等待结束的线程的id。

Retval:用于保存线程退出时的状态,一般采用空,不保存。

3)退出线程(不能使用exit退出线程,如果使用的话,会使创建线程的进程也退出)

函数名:Pthread_exit

函数原型:Void pthread_exit(void *retval);

函数功能:结束线程

所属头文件:<pthread.h>特别注意:同样编译时必须使用gcc –lpthread

返回值:返回为空

参数说明:Retval:用于保存返回值

4)线程互斥

在实际应用中,多个线程往往会访问同一数据或资源,为避免线程之间相互影响,需引入线程互斥机制,而互斥锁是互斥机制中的一种。

1、初始化互斥锁

多线程程序设计_头文件

Pthread_mutex_init

作用:用来初始化互斥锁

mutex:初始化互斥锁的指针。

Attr:初始化互斥锁属性

返回值:成功:0.失败:返回:错误的编码。

2、获取互斥锁

多线程程序设计_初始化_02

Pthread_mutex_lock

作用:用于锁住互斥锁

Mutex:用于指明要锁住的互斥锁。

返回值:成功:0.失败:返回:错误的编码。

3.释放互斥锁

多线程程序设计_初始化_03

Pthread_mutex_unlock

作用:用于解除互斥锁

Mutex:用于指明要解除的互斥锁

返回值:成功:0.失败:返回:错误的编码。

注意:祖先进程结束,那么子孙线程会结束。而祖先进程结束,子孙进程不会结束。

实例:让A进程创建两个线程A1和A2来做任务

thread.c

多线程程序设计_头文件_04

多线程程序设计_初始化_05

上一篇: 发现一款好用的小程序IDE开发工具! 下一篇: 手机怎么远程登录云服务器?