线程
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。 一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。 什么是多线程呢? 即就是一个程序中有多个线程在同时执行。 单线程程序:即,若有多个任务只能依次执行。 当上一个任务执行结束后,下一个任务开始执行。
特点:进行调度的基本单位
下面是相关的代码
这啊一块是用来创建的
下面这段代码是用来终止线程的
通过gcc代码运行相关的.c文件
下面展示一些 内联代码片
。
// A code block
gcc 1.pthread_create.c
// An highlighted block
gcc 1.pthread_create.c
运行之后发现有错误:pthread_create
通过man来查找相关的问题及解决方案
下面展示一些 内联代码片
。
// A code block
man pthread_create
// An highlighted block
man pthread_create
这样就会提示你
// An highlighted block
Link -pthread
这样就能解决问题
运行后如图
下面一些实例及其相关的运行结果
程序以源文件的方式存储在外存(比如硬盘、U盘等)中,只有运行的时候才会被载入内存。对于支持并行的操作系统来说,必须为每一个运行的程序分配所需的资源(内存空间、输入输出设备等),并确保同时运行的程序之间不会相互干扰,为此,操作系统将每一个运行着的程序视为一个进程:
操作系统以进程为单位,为每个进程分配执行所需要的资源;原则上,各个进程之间不允许访问对方的资源;操作系统实时监控着每个进程的执行状态,必要时可以强制其终止执行。也就是说在操作系统看来,每个载入内存执行的程序都是一个进程。操作系统以进程为单位分配资源,各个进程相互独立,执行过程互不干扰。
同一时间,操作系统可以运行多个应用程序(进程),每个应用程序(进程)还可以同时执行多个任务,例如迅雷支持同时下载多个文件,QQ 也支持同时和多个好友聊天。同一进程中,执行的每个任务都被视为一个线程。
进程与线程的关系
线程和进程之间的关系,与工厂和工人之间的关系非常相似。一个进程好比是一座工厂,一个线程就如同这个工厂中的一个工人。工厂可以容纳多个工人,每个工人负责完成一项具体的任务。工厂负责为所有工人提供必要的资源(电力、产品原料、食堂、厕所等),所有工人共享这些资源。
也就是说,一个进程中可以包含多个线程,所有线程共享进程拥有的资源。当然,每个线程也可以拥有自己的私有资源。下图给您展示进程和线程之间的关系:
进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体
下面就是关于进程的完整代码
原图如下
通过makfile代码make之后运行out的文件,产生相应的结果
开发板
及在linux系统配置相关的东西可以打开开发板,用来电亮LCD,配置串口,来电亮led灯,我是直接用配置好的虚拟机压缩包文件来操作的,所以直接进行相关操作。
LCD的图像
下面展示一些 内联代码片
。
// A code block
fb-test; myfb-test /dev/fb0
// An highlighted block
fb-test; myfb-test /dev/fb0
串口部分
下面展示一些 内联代码片
。
// A code block
cd ~ ; i2cdetect -l && i2cdetect -y 0
i2c_usr_test /dev/i2c-0 0x50 w1 0xff # w = write
i2c_usr_test /dev/i2c-0 0x50 r 0x1 0xff # r = read
// An highlighted block
cd ~ ; i2cdetect -l && i2cdetect -y 0
i2c_usr_test /dev/i2c-0 0x50 w1 0xff # w = write
i2c_usr_test /dev/i2c-0 0x50 r 0x1 0xff # r = read
下面就是用命令来控制开发板电亮小灯了
下面展示一些 内联代码片
。
// A code block
cd ~/led_driver_qemu/
insmod 100ask_led .ko
./ledtest /dev/100ask_led0 on
./ledtest /dev/100ask_led1 off
// An highlighted block
cd ~/led_driver_qemu/
insmod 100ask_led .ko
./ledtest /dev/100ask_led0 on
./ledtest /dev/100ask_led1 off
接下来就是启动QEMU来看结果了
// A code block
./qemu-imx6ull-gui.sh
// An highlighted block
./qemu-imx6ull-gui.sh
启动之后就用fb-test来测试了