主要内容
- 进程和线程的区别是什么?
- 单链表的反转
进程和线程的区别是什么?
什么是进程?
进程是操作系统分配资源的基本单元。是程序执行的一个实例。对应着操作系统中一个正在运行的程序。
什么是线程?
线程是进程执行任务的基本单元。线程是进程的一个实体,是进程的一条执行路径。线程是进程的一个特定执行路径。当一个线程修改了进程的资源,它的兄弟线程可以立即看到这种变化。
它们的区别
- 地址空间和其它资源
进程是操作系统分配资源的独立单元。因此进程之间资源是不能共享的。同一个进程内的线程可以共享进程内的资源。且不同进程中的线程也是独立的。 - 通信
进程间的通信比较的复杂,一般通过管道,信号量,共享内存,消息队列等方式。而同一进程下的线程通信却非常的简单,可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性 - 调度和切换
线程的切换要比进程的切换快得多。 - 在多线程OS中
进程是一个不可执行的实体。多线程OS中执行任务的基本单位是线程。
单链表的反转
题目:
输入一个链表,反转链表后,输出新链表的表头。
单链表的反转是一个非常常见的题型。
1 | public ListNode ReverseList(ListNode head) { |
解释:
写得仓促,字丑见谅
这个地方有个可以优化的地方,就是完全可以用head代替cur。为了逻辑清晰,上面的代码依然使用了cur。