linux多线程编程

linux多线程编程

ID:29225783

大小:500.50 KB

页数:64页

时间:2018-12-17

linux多线程编程_第1页
linux多线程编程_第2页
linux多线程编程_第3页
linux多线程编程_第4页
linux多线程编程_第5页
资源描述:

《linux多线程编程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第一章线程基础知识2一.什么是线程2二.线程的优点2三.线程的缺点2四.线程的结构2五.线程标识2六.线程的创建3七..线程的终止4八、一次性初始化8九、线程的私有数据9第二章线程高级知识11一.线程属性11二、线程的分离状态12三、线程的继承性13四、线程的调度策略13五、线程的调度参数14六、线程的作用域16七、线程堆栈的大小17八、线程堆栈的地址18九、线程栈末尾的警戒缓冲区大小18第三章Posix有名信号灯19一、posix有名信号灯函数19二、关于posix有名信号灯使用的几点注意24三、posix有名信号灯应用于多线程25四、posix有名

2、信号灯应用于多进程27五、基于内存的信号灯29第四章互斥量39一、什么是互斥锁39二、初始化/回收互斥锁40三、对互斥量加减锁40四、互斥锁属性45五、应用互斥量需要注意的几点48第五章条件变量48一、什么是条件变量48二、条件变量函数48三、条件变量属性54四、条件变量与互斥锁、信号量的区别55第六章共享内存56一、什么是共享内存区56二、mmap56三、posix共享内存函数60四、ftruncate和fstat函数62五、共享内存区的写入和读出64六、程序例子65第一章线程基础知识一.什么是线程       在一个程序里的多个执行路线就叫做线程。

3、更准确的定义是:线程是“一个进程内部的一个控制序列”。       典型的unix进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程以后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各只独立的任务。 二.线程的优点(1)       通过为每种事件类型的处理分配单独的线程,能够简化处理异步时间的代码。(2)       多个线程可以自动共享相同的存储地址空间和文件描述符。(3)       有些问题可以通过将其分解从而改善整个程序的吞吐量。(4)       交互的程序可以通过使用多线程实现相应时间的

4、改善,多线程可以把程序中处理用户输入输出的部分与其它部分分开。 三.线程的缺点       线程也有不足之处。编写多线程程序需要更全面更深入的思考。在一个多线程程序里,因时间分配上的细微偏差或者因共享了不该共享的变量而造成不良影响的可能性是很大的。调试一个多线程程序也比调试一个单线程程序困难得多。 四.线程的结构       线程包含了表示进程内执行环境必需的信息,其中包括进程中标识线程的线程ID,一组寄存器值、栈、调度优先级和策略、信号屏蔽子,errno变量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本,程序的全局

5、内存和堆内存、栈以及文件描述符。 五.线程标识       就像每个进程有一个进程ID一样,每个线程也有一个线程ID,进程ID在整个系统中是唯一的,但线程不同,线程ID只在它所属的进程环境中有效。线程ID用pthread_t数据类型来表示,实现的时候可以用一个结构来代表pthread_t数据类型,所以可以移植的操作系统不能把它作为整数处理。因此必须使用函数来对来对两个线程ID进行比较。 1.名称::pthread_equal功能:比较两个线程ID头文件:#include函数原形:intpthread_equal(pthread_t

6、tid1,pthread_ttid2);参数:tid1 进程1idtid2 进程2id返回值:若相等返回非0值,否则返回0       2.  名称::pthread_self功能:获取自身线程的id头文件:#include函数原形:pthread_tpthread_self(void);参数: 无返回值:调用线程的线程id      六.线程的创建  3.名称::pthread_create功能:创建线程头文件:#include函数原形:intpthread_create(pthread_t*restric

7、ttidp,constpthread_attr_t*restrictattr,void*(*start_rtn)(void),void*restrictarg);参数: 返回值:若成功返回则返回0,否则返回错误编号 当pthread_creat成功返回时, tidp指向的内存单元被设置为新创建线程的线程ID。attr参数用于定制各种不同的线程属性。可以把它设置为NULL,创建默认的线程属性。       新创建的线程从start_rtn函数的地址开始运行,该函数只有一个无类型指针参数arg,如果需要向start_rtn函数传递的参数不止一个,那么需要把

8、这些参数放到一个结构中,然后把这个结构的地址作为arg参数传入。#include

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。