C语言笔记(三)-进程线程/printf/存储区/static/可重入与不可重入函数

本文详细讲解了C语言中的进程与线程、堆和方法区、printf与scanf、存储区、static关键字以及可重入和不可重入函数的概念。重点介绍了线程如何提高CPU利用率,堆和方法区的用途,以及printf和scanf的格式化输出和输入。此外,还阐述了static关键字的作用,以及可重入函数的特性,最后讨论了传值、传址与传引用的区别。
摘要由CSDN通过智能技术生成

目录

1.进程与线程

2.堆和方法区

3.printf与scanf

4.存储的几个区

5.static

6.可重入函数与不可重入函数

7.传值、传址与传引用


 

1.进程与线程

二者是对CPU工作时间段的描述。

进程的时间段是:CPU加载程序上下文的时间+CPU执行时间+CPU保存程序上下文的时间。在执行进程之前,必须所有资源就绪,也就是上下文,包括环境信息/寄存器内容等。CPU执行任务都是这样一个一个串起来的。

线程就是对进程大颗粒度的细化,把一个任务分解成几个小任务,abc,三者共同使用进程的上下文,提高了CPU的利用效率,因为CPU执行时间短,而加载上下文时间长。过程就变成了:加载程序上下文+执行a+执行b+执行c+保存程序上下文。可以看出线程在进程下行进,且一个进程包括多个线程。

进程与进程之前数据几乎不共享,且彼此之间独立。线程之间共享进程的上下文(堆与方法区),且线程之间会相互影响,一个挂了会导致其他线程也挂掉。

线程在进程上执行不一定是线性的。可以对进程的某块内存地址进行上锁,别的线程想用必须等此线程使用完事。这个锁就是互斥锁。

进程是资源分配的最小单位,线程是CPU调度的最小单位。

多进程就是操作系统一次处理多个程序。多线程是在一个进程中同时运行多个任务,可以提升运行效率,并不能程序提升运行速度。不同线程之间存在抢占CPU的情况。在多核CPU上,多进程要比多线程性能好,因为切换多线程时,需要复制上下文到新核内,造成额外开销。应该面向不同场景用不同的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值