![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
第7章 理解Linux线程(1)
周厚平
Linux + 安卓 = 标配
展开
-
unix 屏障的理解(barrier)
11.6.8 屏障 场景:barrier就像公园的管理员一样, 只有来准备参观的人数达到一定的数量(比如30),管理员才放行到园区游览。 1.“公园”指进程的共享数据 2.“一定的人数”指pthread_barrier_init函数传入的屏蔽数count 3.“达到”指调用pthread_barrier_wait函数的线程个数 4.“放行”:“一定的人数”达到后,各线程才可继续执行。 5.“游览”:”放行“后,各个线程的独立运行。 6.”准备参观的人“:"游客"加入了排队队列,等.原创 2020-07-18 18:09:50 · 544 阅读 · 0 评论 -
【9】条件变量
①引入 (1)为什么要使用条件变量? 1.允许多个线程以无竞争的方式等待特定的条件发生。 2.比如生产者消费者模型,互斥锁保护生产的产品(共享数据); 1.如果没有条件等待,消费者只有不断的轮询获取互斥锁,来操作产品。 2.有了条件等待后,消费者可以在某个条件上等待,条件不满足时线程在等待条件的线程列表上休眠, ...原创 2019-01-02 22:25:12 · 298 阅读 · 0 评论 -
【8】互斥量
①为什么需要互斥量 1.共享变量(shared variable): 多个线程共享的变量 2.多个线程访问共享变量所带来的问题 线程A 线程B global_cnt L U L 5 S S 6...原创 2019-01-02 11:19:40 · 145 阅读 · 1 评论 -
pthread库接口 (介绍)
---------------------------------------------------------------------- POSIX函数 功能 ---------------------------------------------------------------------- pth...原创 2018-12-26 10:58:20 · 1268 阅读 · 0 评论 -
线程ID与线程ID
[1]NPTL标准 1.目前的线程实现是 Native POSIX Thread Library,简称NPTL 。 2.线程又被称为轻量级进程。 3.每一个用户态的线程,在内核之中都对应一个调度实体也拥有自己的进程描述符(task_struct结构体) 4.进程内的所有线程调用 getpid 函数时返回相同的进程ID。[2]线程组 struct task...原创 2018-12-26 10:36:07 · 727 阅读 · 0 评论 -
【5】线程的属性设置(分离属性, 线程调度属性, 其他属性)
------------------------------------------------------------------------------------------------------------- 属性 默认值 说明------------------------------------------------------------------------------------------------------------- contentionscop原创 2018-12-31 17:59:33 · 892 阅读 · 1 评论 -
线程与进程的区别与优缺点
[1]进程 1.每创建一个进程,内核都会给这个进程分配资源(内存.cpu...)。 2.进程是系统分配资源的最小单位。 3.进程之间,彼此的地址空间是独立的(每个进程都有自己独立的虚拟地址空间) [2]线程 1.同一个进程的多个线程共享一份全局内存区域(多个线程同属于同一个进程) 2.线程是系统...原创 2018-12-25 19:55:34 · 1733 阅读 · 0 评论 -
(6)线程的连接和分离
①线程连接 [1]int pthread_join(pthread_t thread, void **retval); pthread_t: 等待的线程尚未退出,那么 pthread_join 的调用线程就会陷入阻塞。 retval: 接收返回值 · 等待的线程尚未退出,那么pthread_join 的调用线程就会陷入阻塞。 · 等...原创 2018-12-28 11:29:50 · 939 阅读 · 1 评论 -
线程的退出
①线程退出的方法: 1.创建线程时的tart_routine()函数内执行了return(),并且返回指定值。 2.线程调用 pthread_exit() 3.其他线程调用了pthread_cancel()函数取消了该线程(详见第8章) 4.线程函数执行完后自动返回(就算没有以上3中方法) 注意: 线程组中的任何一个线程调用了exit()函数,或者主线程在m...原创 2018-12-27 17:10:20 · 4752 阅读 · 0 评论 -
线程的创建---线程标识ID
[1]int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg); thread: 线程创建成功的话,会将分配的线程ID填入该指针指向的地...原创 2018-12-26 21:17:23 · 2094 阅读 · 0 评论