为什么要用多线程? 多进程不是也可以实现多任务吗? 那么我们要来看看线程相对于进程的优点:
1:线程比进程更节俭, 有数据显示进程的占用资源是线程的30倍:
新起一个进程,必须要为他分配地址空间,以及数据表用于维护代码段 数据段以及堆栈;
而线程是多个线程共享地址空间,以及大部分数据;
还有线程的切换时间也远远小于进程的切换的时间;
2:线程通信更简单;
因为进程之间相互独立的地址空间,以及相互独立的数据等;所有他们之间的通信必定复杂;
而线程之间共享大部分数据,所有他们之间的通信简单;但是带来的问题就是数据的同步问题;
由进程和线程的特点决定他们通信的不同,进程间通信有多种形式:
1,管道PIPE: 父子进程之间使用;
2,命名管道FIFO: 先进先出 first in first out
3,信号量:
4,共享内存:
5,socket:
线程通信则主要是存在数据同步的问题,一个数据不能被多个线程同时修改:
1,互斥量
2,读写锁:
3,条件变量
4,信号量: