- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
C++多线程,消息队列用法
进程是没有活力的,它只是一个静态的概念。为了让进程完成一些工作,进程必须至少占有一个线程,所以线程是描述进程内的执行,正是线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可以包含几个线程,它们可以同时执行进程的地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。
线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。
每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。
多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能。这一点在多线程编程时应该注意。
现代操作系统大都提供了相应的机制,用来处理线程的生存期、同步,以及其他“和线程有关”的属性,如优先级、线程专有存储空间(thread-specificstorage)等。多线程编程是一门语言的难点和重点。
接下来让我们看看处理线程的函数:
pthread_create()函数,创建线程
函数原型如下:
intpthread_create(
intpthread_create(pthread_t*restrictthread,constpthread_attr_t*restrictattr,
void*(*start_routine)(void*),void*restrictarg);
参数讲解:
1、每个线程都有自己的ID即threadID,可以简称tid,呵呵,是不是想起什么来了?。。。对,和pid有点象。其类型为pthread_t,pthread_t在头文件/usr/include/bits/pthreadtypes.h中定义:
typedefunsignedlon
typedefunsignedlongintpthread_t;
可以看成是线程的标志符。当成功创建一个新线程的时候,系统会为该线程分配一个tid,并将该值通过指针返回给调用它的程序。
2、attr申明线程的属性。
属性结构为pthread_attr_t,它在头文件/usr/include/pthread.h中定义。设为NULL,表示在这里我们只使用线程的默认属性就可以了。
3、start_routine表示新创建的线程所要执行的例程。线程以调用该函数开始,直到由该函数返回(return)终止这个线程,或者在start_routine所指向的函数中调用pthread_exit函数终止。start_routine只有一个参数,该参数由随后的arg指针来指出。
4、arg:也是一个指针,也就是start_routine指针所指向的函数的参数。返回值:
当pthread_create调用成功时,该调用返回0;否则,返回一个错误代码指出错误的类型。
pthread_exit()函数
线程的终止可以是调用了pthread_exit或者该线程的例程结束。也就是说,一个线程可以隐式的退出,也可以显式的调用pthread_exit函数来退出。
函数原型如下:
voidpthread_exit(voi
voidpthread_exit(void*value_ptr);
线程的终止可以是调用了pthread_exit或者该线程的例程结束。也就是说,一个线程可以隐式的退出,也可以显式的调用pthread_exit函数来退出
pthread_exit函数唯一的参数value_ptr是函数的返回代码,只要pthread_join中的第二个参数value_ptr不是NULL,这个值将被传递给value_ptr
pthread_join()函数,等待一个线程终止
调用pthread_join的线程将被挂起直到参数thre
您可能关注的文档
- 再论啤酒沉淀物的分析.docx
- 电力设备交接和预防性试验规程.docx
- 彩塑教学设计.docx
- 小学四年级德育总结.docx
- 九年级第一学期英语教学工作计划范文.docx
- TD-SCDMA信令分析指导书.docx
- 电工班绩效考核制度.docx
- 生产管理知识运用现代教育技术来构建新型物理教学模式.docx
- 生活饮食医学(1).docx
- 2020年八年级数学暑假作业答案参考教学设计.docx
- 分布式控制系统(DCS)系列:Honeywell Experion PKS_(10).集成与通信.docx
- 分布式控制系统(DCS)系列:Schneider Electric EcoStruxure Foxboro DCS_16.现场总线与通信技术.docx
- 分布式控制系统(DCS)系列:Siemens PCS 7_(6).通信协议与网络配置.docx
- 分布式控制系统(DCS)系列:Yokogawa CENTUM VP_8.控制策略设计与实现.docx
- 分布式控制系统(DCS)系列:Yokogawa CENTUM VP_7.CENTUMVP系统网络配置.docx
- 分布式控制系统(DCS)系列:Yokogawa CENTUM VP_12.数据采集与处理.docx
- 分布式控制系统(DCS)系列:Honeywell Experion PKS_(7).高级报警管理.docx
- 分布式控制系统(DCS)系列:Yokogawa CENTUM VP_14.安全与防护机制.docx
- 可编程逻辑控制器(PLC)系列:Allen-Bradley ControlLogix_5.网络与通信.docx
- 分布式控制系统(DCS)系列:Schneider Electric EcoStruxure Foxboro DCS_18.系统升级与迁移.docx
文档评论(0)