1、进程用来集合资源,线程是cpu中调度的最小单位
2、线程引入需要解决的问题
2.1、fork系统调用的影响,如果父进程有多个线程,子进程是否需要继承所有线程,如果不,可能子进程不能正常工作,因为可能所有的线程都是必须的
2.2、如果子进程和父进程是一样多的线程,当一个线程在read发生阻塞时,是否父子线程都要阻塞?当输入一行数据,是否两个线程都收到?还是只有父线程或子线程收到?这对于网络连接也有同样的问题
2.3、如果一个线程关闭一个文件,而另外一个线程正在读该文件会有设么问题?
2.4、假如一个线程发现内存不够开始申请内存,到此时发生线程切换,新线程也休息到这个问题也开始申请内存,那这是申请一次还是2次?
2.5、几乎所有未考虑线程的系统,其库例程都不可重入,如果前一个系统调用在未激活就进行第二次调用,必然会引起崩溃
2.6、在unix中一个系统调用执行完后,其状态放在一个全局变量error中,如果一个线程执行系统调用,在它读取error之前,另一个线程也执行系统调用并清除了error会有什么问题?
2.7、中上,仅仅向一个现有的系统加入线程而不进行彻底的重新设计是根本不行的,起码系统调用的语义要重新定义,库例程也要重写
转载于:https://www.cnblogs.com/liushuhe1990/p/9733554.html