多线程编程.doc
《多线程编程.doc》由会员分享,可在线阅读,更多相关《多线程编程.doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux多线程编程一 Linux下线程概述进程就是一个正在运行的程序,是一个动态的概念。一个进程不仅包含了正在运行的代码,也包括了运行代码所需要的资源,每个进程有自己的数据段、代码段和堆栈段。进程是系统中程序执行和资源分配的基本单位。在一个CPU上可以存在多个进程,但在同一个时间内,一个CPU只能有一个进程工作。线程是一种轻量级的进程。与进程最大的不同就是线程没有系统资源。线程是操作系统调度的最小单位,可以理解为一个进程可以由一个或多个线程组成的。在一个进程内部,多个线程之间的资源是共享的。也就是说,如果一个进程内部的所有线程拥有相同的代码地址空间和数据空间,则任意一个线程都可以访问其他线程
2、的数据。二 进程和线程对比不同点:u 资源分配不同。进程拥有独立的内存和系统资源,每个进程有自己独立的代码、静态数据、堆栈和寄存器等资源,进程之间是相互独立的。而在一个线程内部,线程之间的资源是共享的,系统不会为线程分配系统资源。u 工作效率不同。进程拥有系统资源,在进程切换的时候,操作系统需要保留进程占用的资源;而线程的切换不需要保留系统资源,切换效率远高于进程。线程较高的切换效率提高了数据处理的并发能力。u 数据传递机制。对不同进程来说,他们具有独立的数据空间,要进行数据的传递只能通过通信的方式(管道、FIFO、消息队列、信号量、共享存储、socket)进行,这种方式不仅费时,而且非常不方
3、便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据能直接为其他线程所用,这不仅快捷,而且方便。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明为static的数据更有可能给多线程带来灾难性的打击,这些正是编写多线程程式时最需要注意的地方。用户地址空间线程一线程二线程三进 程图1 进程与线程的关系三、线程操作Linux系统下的多线程遵循POSIX(可移植操作系统接口Portable Operating System Interface)线程接口,称为pthread。编写Linux下的多线程时,需要使用头文件pthread.h,连接时需要
4、使用库libpthread.a。由于thread库不是Linux的标准库,需要给编译器制定连接的库,使用gcc thread.c lpthread命令,编译器会寻找libpthread.a静态库文件,并且连接到用户代码。1、 创建线程:函数pthread_create用来创建一个线程,它的原型为:int pthread_create (pthread_t *_thread, const pthread_attr_t *_attr,void *(*_start_routine) (void *), void *_arg);pthread_t *_thread参数为指向线程标识符的指针,返回创建线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多线程 编程
限制150内