多线程

来源:互联网 发布:程序员深夜骚扰 编辑:程序博客网 时间:2024/06/02 19:42

为什么要用多线程?  多进程不是也可以实现多任务吗? 那么我们要来看看线程相对于进程的优点

1:线程比进程更节俭, 有数据显示进程的占用资源是线程的30倍:

新起一个进程,必须要为他分配地址空间,以及数据表用于维护代码段 数据段以及堆栈;

而线程是多个线程共享地址空间,以及大部分数据;

还有线程的切换时间也远远小于进程的切换的时间;

2:线程通信更简单;

  因为进程之间相互独立的地址空间,以及相互独立的数据等;所有他们之间的通信必定复杂;

而线程之间共享大部分数据,所有他们之间的通信简单;但是带来的问题就是数据的同步问题;

由进程和线程的特点决定他们通信的不同,进程间通信有多种形式:

1,管道PIPE: 父子进程之间使用;

2,命名管道FIFO:   先进先出  first  in  first     out

3,信号量:

4,共享内存:

5,socket:

线程通信则主要是存在数据同步的问题,一个数据不能被多个线程同时修改:

1,互斥量

2,读写锁:

3,条件变量

4,信号量: