一.进程和线程 进程:在内存中运行的应用程序,一个exe是一个进程。 如:ps -exf 可以查看各个应用的进程,其中ppid为父进程; ps aux | egrep '(cron|syslog)' 找出与 cron 与 syslog 这两个服务有关的 PID 号码 ...
问题 . local 变量的压栈和出栈过程 void func int a int b 系统中有一个栈顶指针,每次分配和回收local 变量时,其实就是移动栈指针。 . static local变量的分配风险 void func static int a 这个变量a可能会被分配多次,因为如果func 可能同时被多个线程调用,也就是函数在分配内存时是可能出现线程切换的。 问题: 如 void fun ...
2013-06-21 14:11 0 2800 推荐指数:
一.进程和线程 进程:在内存中运行的应用程序,一个exe是一个进程。 如:ps -exf 可以查看各个应用的进程,其中ppid为父进程; ps aux | egrep '(cron|syslog)' 找出与 cron 与 syslog 这两个服务有关的 PID 号码 ...
多线程栈帧 每个线程有自己独立的栈帧,它们之间是相互独立的 ...
很多现代操作系统中,一个进程的(虚)地址空间大小为4G,分为系统空间和用户空间两部分,系统空间为所有进程共享,而用户空间是独立的,一般WINDOWS进程的用户空间为2G。 一个进程中的所有线程共享该进程的地址空间,但它们有各自独立的(私有的)栈(stack),Windows线程 ...
多线程中两个必要的开销:线程的创建、上下文切换 创建线程: 创建线程使用是直接向系统申请资源的,对操作系统来说,创建一个线程的代价是十分昂贵的, 需要给它分配内存、列入调度,同时在线程切换的时候还要执行内存换页,CPU 的缓存被 清空,切换回来的时候还要重新从内存中读取信息,破坏了数据的局部性 ...
在实际功能中,会存在一些线程交互的情况。比如:一个线程执行某个操作,当操作的对象到达某种状态时,会等待其他线程来执行。 下面代码的功能是,一个线程对一个数字执行减少方法,当减到1时,等待增加线程操作。 最后输出结果是:数字会不停减少,只到1就会增加。但是由于增加线程比减少线程慢 ...
进程与线程的概念 进程 考虑一个场景:浏览器,网易云音乐以及notepad++ 三个软件只能顺序执行是怎样一种场景呢?另外,假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源 ...
线程之间的通信 前言 为什么要有线程通信? 多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,当然如果我们没有使用线程通信来使用多线程共同操作同一份数据的话,虽然可以实现,但是在很大程度会造成多线程之间对同一共享变量的争夺,那样的话势必为造成 ...
基本概念: 串行:多个任务顺序进行 并行:多个任务同时进行,物理上的同时发生。不影响 并发:多个任务在同一时间间隔进行,一起完成,逻辑上的同时发生。例如:cpu来回切换 进程和线程: 进程:正在运行的程序,是系统进行资源分配和调用的独立单位,每个进程都有自己的内存空间和系统资源 单进程 ...