1.总的区别:
进程是担当和分配系统资源的基本单位,线程是任务执行的,比进程更小的基本单位。
线程可以理解为轻量级的进程,也意味着,线程与进程有一些相似的运行结构,比如,都有属于自己的栈空间,属于自己的变量。同时也意味着线程的运行有比进程更小的开销。
进程有独立的地址空间,线程没有独立的地址空间,它和与它处于同一进程的线程共享地址空间。
2.由区别产生的一些问题
线程的优点:
a,生成一个线程开销小,不需要要像进程那样有代码段,数据段,堆栈段,环境变量等,那么多的资源的维护开销。同时线程的切换上,也比进程要高效的多。所以在多任务的高并发高频通信场景上,多进程表现出比较大的优势。
b,因为公共地址空间,线程间通信上不像进程间通信那样麻烦,而且效率要高的多。
c,通过多线程的实现多任务,能优化代码结构,便于程序理解。
线程的缺点:
a,多线程程序健壮性低于多进程程序,因为,多线程程序中,只要一个线程挂掉,整个进程便被杀死。
b,多线程对资源进行操作时需要非常注意,防止多线程同时操作,这里需要加锁,对锁的使用需要非常小心,注意上锁的顺序,避免死锁的发生。
暂时想到这么多。