进程线程总结2

1.什么是线程

线程是轻量级进程。

多线程优点:线程之间除了栈区的内容其他都是共享的

缺点:互斥和同步

创建子线程

pthread_create()

什么时候选择用多线程,什么时候多进程

1创建和销毁较频繁使用线程,因为创建进程花销大。

2需要大量数据传送使用线程,因为多线程切换速度快,不需要跨越进程边界。

3安全稳定选进程;快速频繁选线程

线程相关函数

pthread_create()

参数1:pthread_t* 参数2:线程的属性一般设置为NULL

参数3:函数的指针 void*(void*)

参数4:主线程给子线程传值,设置为NULL

编译时还需要链接pthread库

-pthread

等待子线程结束

pthread_join()

参数1:pthread_t 

参数2:子线程给主线程传值 NULL

3.线程退出

1.主动退出

pthread_exit(void *retval); 参数为NULL,表示该线程退出不带出来值

线程中需要解决的问题

1.互斥

多线程不允许同时访问临界资源

解决方法

1.互斥锁的作用

引入互斥锁的目的是用来保证共享数据操作的完整性。

互斥锁主要用来保护临界资源

每个临界资源都由一个互斥锁来保护,任何时刻最多只能有一个线程能访问该资源。

线程必须先获得互斥锁才能访问临界资源,访问完资源后释放该锁。如果无法获得锁,线程会阻塞直到获得锁为止

初始化互斥锁

pthread_mutex_init()

参数1:互斥锁

参数2:互斥锁属性//NULL表示缺省属性

返回值

成功:0

出错:-1

申请互斥锁

pthread_mutex_lock()

参数:mutex:互斥锁

释放互斥锁

pthread_mutex_unlock()

函数参数:mutex:互斥锁

返回值:

成功:0

出错:-1

同步

多线程在访问临界资源时,按照一定的操作顺序来访问

信号量:

有名信号量:多进程实现同步

无名信号量:多线程同步

信号灯集:多进程实现同步

1.信号量的引用

信号量代表某一类资源,其值表示系统中该资源的数量,信号量的值为非负整数,它被用来控制对公共资源的访问。

信号量是一个受保护的变量,只能通过三种操作来访问

P操作(申请资源)-1  sem_wait()  sem_trywait()

V操作(释放资源)+1 sem_post()

1.有名管道特点:

1.有名管道是对无名管道的改进,它可以使互不相关的两个进程互相通信,并且在文件系统中可见,可以通过文件名来找到。

2.半双工的通信方式,进程通过文件IO来操作有名管道。

3.有名管道遵循先进先出原则,不支持lseek()

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...