进程与线程同步

进程是执行过程中的代码

线程是一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成

程是指正在运行的一个程序的实例,包括代码、数据、堆栈、打开的文件等系统资源,是操作系统中资源分配和调度的基本单位。

线程

1、线程的概述

进程有自己的独立地址空间,多个线程共有一个地址空间

    每个线程都有自己的栈区,寄存器

     多个线程共享代码区、堆区、全局数据区、打开的文件(文件描述符)都是线程共享的

线程实最小的执行单位,进程是最小的的资源分配单位

    多个线程可以抢占更多的时间片

     线程切换上下文比进程切换快

2、线程的创建

2.1线程函数

获得线程id函数

pthread_t pthread_self(void);	// 返回当前线程的线程ID

在·一个进程中调用线程创建函数就可以得到一个子线程,需要给每个创建出来的线程指定一个处理函数

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                   void *(*start_routine) (void *), void *arg);


thread: 传出参数,是无符号长整形数,线程创建成功,会将线程 ID 写入到这个指针指向的内存中

attr:线程的属性,一般写NULL

start_routine:函数指针,创建出的子线程的处理动作,也就是该函数在子线程中执行

arg:作为实参传递到 start_routine 指针指向的函数内部

2.2创建线程

3、线程的退出

子线程退出由主线程回收

参数:线程退出的时候携带的数据,当前子线程的主线程会得到该数据。如果不需要使用,指定为 NULL

4、线程的回收

线程和进程一样,子线程退出的时候其内核资源主要由主线程回收,线程库中提供的线程回收函叫做 pthread_join()

5、线程分离

--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值