sizeof与strlen区别 线程与进程区别

sizeof和strlen的区别:

1,本质区别:sizeof是运算符,strlen是函数;

2,sizeof的参数可以是类型,变量,还可以是函数,是函数时返回的是函数返回值的大小,strlen的参数只能是字符串,并且是以‘\0’结尾的字符串,遇到‘\0’时返回字符串的长度;

3,数组名做sizeof参数时,不退化从指针。sizeof用来计算类型占内存的大小。当参数为字符串时,是计算指针的内存大小,即四字节数组名做strlen的参数退化为指针,函数从数组的第一个元素的地址开始计数,直到遇到‘\0’结束。

4,sizeof只能计算静态数组的维数,不能计算动态数组,数组作为函数参数传递时,传递的是指针而不是数组。

线程与进程的区别:

线程:线程是CPU调度的最小单位,是进程中的一个实体,线程自己不拥有系统资源,只占用在运行时必须的资源,可以和同属一个进程的其他线程共享进程所拥有的全部资源。每个线程有自己独立的运行栈和程序计数器。一个线程可以创建和撤销另一个线程,同一个进程中线程可以并发执行。

线程的优点:

(1)容易调度

(2)并发,进程可以通过多线程执行程序的不同部分;

(3)资源利用率小(开销小),创建线程比创建进程快;

(4)可以充分发挥多处理器的作用,并发执行程序时,可以使每个处理器都利用起来;

进程:进程时资源分配的最小单位,每个进程都有自己独立的代码和数据空间。一个进程可以包含多个线程。

线程与进程的五个阶段:创建,就绪,运行,阻塞,终止。

一个进程里有一个主线程,主线程终止代表此进程结束。主线程可以创建其他子线程。

线程与进程的关系:

(1)一个线程只能属于一个进程,一个进程可以有多个线程;

(2)进程所拥有的资源,同一进程下的所有线程共享;

(3)处理机上运行的实际是线程;

(4)线程在执行时需要有同步与互斥操作。利用消息通信方式。

线程与进程的区别:

(1)调度;线程是调度的基本单位,进程是资源的基本单位

(2)并发性;进程之间可以并发执行,同一进程的不同线程也可以并发执行;

(3)资源问题;进程可以拥有资源,线程不占有资源,但可以访问进程所有资源。

(4)系统开销;创建和撤销进程时系统开销明显大于线程的开销。

posted @ 2021-03-10 23:31  simonlma  阅读(11)  评论(0)    收藏  举报