linux线程和进程

1.定义

  • 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位;进程是资源分配的最小单位;

  • 线程是进程的一个实体,行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.是CPU调度和分派的基本单位,它是比进程更小的能独立运,线程是程序执行的最小单位。

2.创建

2.1 线程的使用实例

编程如下代码

#include 
#include 
#include 

#include 
#include 
#include 


void * func(void *arg)
{
    int num=*(int *)arg;
    int i=0;

    for(i=0;i

然后编译c文件

$ gcc linux_thread_test.c -o linux_thread -lpthread    

查看生成可执行文件linux_thread
这里写图片描述
然后 运行程序

$ ./linux_thread

查看打印结果
linux线程和进程_第1张图片
从结果打印来看,线程1和线程2在同时工作打印数字。

2.2 进程的使用实例

编程如下代码

#include 
#include 


void func(int num)
{
    int i=0;

    for(i=0;i

然后编译c文件

$ gcc linux_process.c -o linux_process 

查看生成可执行文件linux_process
这里写图片描述
然后 运行程序

$ ./linux_process

查看打印结果
linux线程和进程_第2张图片
从结果打印来看,子进程和父进程分别不同的在打印数字。
从进程和线程的工作过程,似乎两者没有区别,都能同时进行不同的调度执行工作。。。。
但是,线程和进程有哪些不同呢?

3.线程和进程的差异

如图线程的数据结构模型,主要由堆栈段、代码段和数据段。
linux线程和进程_第3张图片
进程的创建相当于重新开辟了新的内存地址空间,创建新的进程模型。进程间的内存空间是相互独立的互不干扰,所以进程间的数据传递需要进程通信。
而线程的创建,仅仅是开辟新的Stack段,如下图所示,其他数据都是共享的。
linux线程和进程_第4张图片

你可能感兴趣的:(Linux,Android底层,linux,线程,线程与进程)