进程以及线程

进程的概念
进程,是计算机中的程序的一次实例化,是系统进行资源分配的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。
每一个任务(进程)被创建时,系统会为他分配存储空间等必要资源,然后在内核管理区为该进程创建管理节点,以便后来控制和调度该任务的执行。

线程的概念
线程是进程中一个控制序列,每个进程都最少有一个线程,线程是调度的基本单位。在linux中线程也是一个轻量级的进程。
线程的特点就是在不需要独立资源的情况下就可以运行。

区别
(1)资源分配:进程是资源分配的基本单位,而线程是调度的基本单位
(2)进程的个体间是完全独立的,而线程间是彼此依存的。多进程环境中,任何一个进程的终止,不会影响到其他进程。而多线程环境中,父线程终止,全部子线程被迫终止(没有了资源)。而任何一个子线程终止一般不会影响其他线程,除非子线程执行了exit()系统调用。任何一个子线程执行exit(),全部线程同时灭亡。
(3)线程与线程大部分共享,但是也有一部分数据私有,线程ID、上下文(切换时候寄存器中的值)、自己独享一个栈空间、错误码、信号屏蔽字、调度的优先级。
(4)调度和切换:线程上下文切换比进程上下文切换要快得多。
(5)一个进程中有多个线程时候,线程共享以下,在进程与进程之间的切换所花费消耗的大于线程与线程之间切换的花销
(6)线程比进程占用的资源要小,一个线程的创建远小于进程的创建。
(7)进程与进程之间是独立的,所以在并发过程中,用同步互斥少,相对安全,代码编写容易。线程之间大多数资源共享,所以往往要加上同步互斥锁。
(8)线程创建出来的线程是平等的没有上下级,而进程创建出进程就为该进程的子进程

联系

  1. 进程与线程之间的关系:线程是存在进程的内部,一个进程中可以有多个线程,一个线程只能存在一个进程中。
  2. 一个线程的结束进程不一定会退出,但是进程的退出,线程将退出。
  3. 一个进程中的多个线程共享:
    1)一个进程中线程与线程之间同的虚拟地址空间、
    2)共享文件描述符、
    3)每种信号的处理方式、
    4)当前的工作目录、
    5)用户ID和组ID
  4. 进程等待,防止造成僵尸进程。而线程也要进行等待,释放线程的资源。

线程API函数

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190403113348505.?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhp在这里插入图片描述
线程创建:
int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void restrict arg);
// 返回:若成功返回0,否则返回错误编号
线程退出:
int pthread_exit(void *rval_ptr);
线程等待:
int pthread_join(pthread_t thread, void **rval_ptr);
// 返回:若成功返回0,否则返回错误编号

线程ID获取:
pthread_t pthread_self(void);
// 返回:调用线程的ID

互斥锁的API函数

创建及销毁互斥锁:
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
int pthread_mutex_destroy(pthread_mutex_t mutex);
// 返回:若成功返回0,否则返回错误编号
加锁以及解锁
int pthread_mutex_lock(pthread_mutex_t mutex);
int pthread_mutex_trylock(pthread_mutex_t mutex);
int pthread_mutex_unlock(pthread_mutex_t mutex);
// 返回:若成功返回0,否则返回错误编号

后续还有。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值