下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、linux多线程及线程间同步1、进程和线程的区分进程的目的就是承担分配系统资源(cpu时光、内存等)的基本单位。线程是进程的一个执行流,是cpu调度和分派的基本单位,它是比进程更小的能自立运行的基本单位。一个进程由几个线程组成,线程与同属一个进程的其他的线程分享进程所拥有的所有资源。地址空间:进程有自立的地址空间,包括文本区域(text region)、数据区域(data region)和堆栈(stack region);一个进程崩溃后,在庇护模式下不会对其它进程产生影响;线程只是一个进程中的不同执行路径,线程有自己的堆栈和局部变量(在运行中必不行少的资源),但线程之间没有单独的地址空间,一个
2、线程死掉就等于囫囵进程死掉。同一进程内的线程分享进程的地址空间。通信:进程间通信ipc,线程间可以挺直读写进程数据段(如全局变量)来举行通信需要进程同步和互斥手段的辅助,以保证数据的全都性。调度和切换:线程上下文切换比进程上下文切换要快得多。在多线程os中,进程不是一个可执行的实体。地址空间:进程内的一个执行单元;进程起码有一个线程;它们分享进程的地址空间;而进程有自己自立的地址空间;资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程分享进程的资源线程是处理器调度的基本单位,但进程不是.二者均可并发执行.2、用法线程缘由在系统下,启动一个新的进程必需分配给它自立的地址空间,建立众多的数据
3、表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间用法相同的地址空间,分享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时光也远远小于进程间切换所需要的时光。线程间便利的通信机制。对不同进程来说,它们具有自立的数据空间,要举行数据的传递只能通过通信的方式举行,这种方式不仅费时,而且很不便利。线程则不然,因为同一进程下的线程之间分享数据空间,所以一个线程的数据可以挺直为其它线程所用,这不仅快捷,而且便利。3、线程操作的函数includeint pthread_cre
4、ate(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg);int pthread_join (pthread_t tid, void * status);pthread_t pthread_self (void);int pthread_detach (pthread_t tid);void pthread_exit (void *status);pthread_create:用于创建一个线程,胜利返回0,否则返回exxx(为正数)。pthread_t *tid:线程id的类型为pthr
5、ead_t,通常为无符号整型,当调用pthread_create胜利时,通过*tid指针返回。const pthread_attr_t *attr:指定创建线程的属性,如线程优先级、初始栈大小、是否为守护进程等。可以用法null来用法默认值,通常状况下我们都是用法默认值。void *(*func) (void *):函数指针func,指定当新的线程创建之后,将执行的函数。void *arg:线程将执行的函数的参数。系统学习意义气呜呜吧久零就易,假如想传递多个参数,请将它们封装在一个结构体中。pthread_join:用于等待某个线程退出,胜利返回0,否则返回exxx(为正数)。pthread_
6、t tid:指定要等待的线程idvoid * status:假如不为null,那么线程的返回值存储在status指向的空间中(这就是为什么status是二级指针的缘由!这种才参数也称为“值-结果”参数)。pthread_self:用于返回当前线程的id。pthread_detach:用于是指定线程变为分别状态,就像进程脱离终端而变为后台进程类似。胜利返回0,否则返回exxx(为正数)。变为分别状态的线程,假如线程退出,它的全部资源将所有释放。而假如不是分别状态,线程必需保留它的线程id,退出状态直到其它线程对它调用了pthread_join。pthread_exit用于终止线程,可以指定返回值
7、,以便其他线程通过pthread_join函数猎取该线程的返回值。void *status:指针线程终止的返回值。4、线程间互斥用法互斥锁(互斥)可以使线程按挨次执行。通常,互斥锁通过确保一次惟独一个线程执行代码的临界段来同步多个线程。互斥锁还可以庇护单线程代码。int pthread_mutex_lock(pthread_mutex_t * mptr);int pthread_mutex_unlock(pthread_mutex_t * mptr);先声明一个pthread_mutex_t类型的变量,用作下面两个函数的参数。在对临界资源举行操作之前需要pthread_mutex_lock先加
8、锁,操作完之后pthread_mutex_unlock再解锁。5、线程间同步条件变量:用法条件变量可以以原子方式堵塞线程,直到某个特定条件为真为止。条件变量始终与互斥锁一起用法。对条件的测试是在互斥锁(互斥)的庇护下举行的。includeint pthread_cond_wait(pthread_cond_t *cptr, pthread_mutex_t *mptr);int pthread_cond_signal(pthread_cond_t *cptr);/both return: 0 if ok, positive exxx value on errorpthread_cond_wait用于等待某个特定的条件为真,pthread_cond_signal用于通知堵塞的线程某个特定的条件为真了。在调用者两个函数之前需要声明一个pthread_cond_t类型的变量,用于这两个函数的参数。/*是否认识posix多线程编程技术?如认识,编写程序完成如下功能:1)有一int型全局变量g_flag初始值为0;2)在主线称中起动线程1,打印“th
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河源市连平县人民代表大会常务委员会办公室公开招聘编外人员备考题库及答案详解1套
- 4K神经内镜在鞍结节手术中优势
- 3D打印生物支架在神经再生中的安全评估策略
- 3D打印植入物在复杂骨缺损修复中的优势
- 3D打印引导下宫颈癌放疗剂量梯度与肾保护策略
- 2025年内蒙古交通集团有限公司社会化公开招聘备考题库有答案详解
- 3D打印人工晶状体的光学性能测试
- 2025年嘉峪关市教育系统公开招聘公费师范毕业生和小学全科型教师37人备考题库及一套答案详解
- 2025年江西省赣房投资集团有限公司社会招聘备考题库带答案详解
- 小学信息技术课程微型垂直农场系统中的编程与控制教学研究课题报告
- 桶装水配送承包运输协议书范本(2024版)
- 我国贸易进出口总额影响因素的实证分析
- 质疑函授权委托书
- 甲壳动物学智慧树知到期末考试答案2024年
- 低空经济产业园建设项目可行性研究报告
- 中考数学讲座中考数学解答技巧基础复习课件
- APQP流程管理-各阶段输出资料一览表
- 重庆市市政道路道路开口施工组织方案
- 全口义齿人工牙的选择与排列 28-全口义齿人工牙的选择与排列(本科终稿)
- 开放系统11848《合同法》期末机考真题(第17套)
- 内科学 泌尿系统疾病总论
评论
0/150
提交评论