Linux C 程序 线程(18)
线程控制
1.线程与进程的关系
线程:计算机中独立运行的最小单位。
在用户角度:多个线程是同时执行的。
操作系统角度:各个线程交替执行
以上只针对单核CPU的情况
在多核CPU主机上,多个线程可以同时运行。
为什么支持对进程的情况下引入多线程?多线程相对多进程有以下优点:
1.多进程的情况下,每个进程有自己的独立的空间地址。同一进程内的多个线程共享进程内的空间地址
2.在系统调度方面:进程空间独立,线程共享空间,线程间的切换速度远远快于进程间的切换。
3.在通信机制方面:进程间的数据互相独立,通信要以专门的通信方式,必须经过操作系统,同一进程内的
线程共享数据空间,直接修改,不必进过操作系统,方便省时。
概括以上优点:节约:节约资源,节约时间
4.提高应用程序的响应速度
5.提高多处理器的效率
6.改善程序结构
虽然线程在进程内共享空间地址,但是也有自己的私有数据
1.线程号thread id
2.寄存器
3.堆栈
4.信息掩码
5.优先级
6.线程私有的存储空间
Linux支持POSIX多线程接口,称为pthread。
编写Linux下的多线程程序需要使用头文件pthread.h,链接时需要使用libpthread.a
2.创建线程
1.线程创建函数pthread_create
函数的执行次数要被限制为一次pthread_once
2.线程属性 pthread_create 函数的一个参数pthread_attr_t,一个结构体
3.线程终止 (1)return (2)pthread_exit()
在主线程中return返回或调用exit,则整个进程将终止,因此主线程不能过早返回
如果主线程调用pthread_exit,那么仅仅主线程消亡,进程不会结束,进程内的其他线程不会终止,直到所有线程结结束,进程才会终止。
线程终止最重要的问题是资源释放问题:pthread_cleanup_push(),pthread_cleanup_pop()用于自动释放资源。两个函数必须成对出现{}
另一个问题:线程同步问题。
3.私有数据
4.线程同步
1.互斥锁
2.条件变量
3.异步信号
5.出错处理
1.错误检查
2.错误码
3.错误提示信息
strerror string.h
perror stdio.h
Linux C 程序 线程(18)的更多相关文章
- Linux Ubuntu运行线程程序出现undefined reference to ‘pthread_create’和undefined reference to ‘pthread_join’错误。
Linux Ubuntu运行线程程序出现undefined reference to ‘pthread_create’和undefined reference to ‘pthread_join’错误. ...
- Linux查看进程线程个数
1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...
- 性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具
性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在popte ...
- 在Linux中使用线程
我并不假定你会使用Linux的线程,所以在这里就简单的介绍一下.如果你之前有过多线程方面的编程经验,完全可以忽略本文的内容,因为它非常的初级. 首先说明一下,在Linux编写多线程程序需要包含头文件p ...
- linux c程序中获取shell脚本输出的实现方法
linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...
- 配置开发支持高并发TCP连接的Linux应用程序全攻略
http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480 ...
- Linux进程或线程绑定到CPU
Linux进程或线程绑定到CPU 为了让程序拥有更好的性能,有时候需要将进程或线程绑定到特定的CPU,这样可以减少调度的开销和保护关键进程或线程. 进程绑定到CPU Linux提供一个接口,可以将进程 ...
- Linux进程和线程的比較
进程与线程 參考:http://www.cnblogs.com/blueclue/archive/2010/07/16/1778855.html 首先比較Linux进程和线程的创建的差别,以此展开: ...
- Linux C++程序进行性能分析工具gprof使用入门
性能分析工具 软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键.这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是 ...
随机推荐
- SimpleUrlHandlerMapping 处理器映射的配置--转
http://blog.csdn.net/rainier001/article/details/6860491 <?xml version="1.0" encoding=&q ...
- alljoyn连接时-fno-rtti选项测试结果
以AllJoyn自带的chat示例在pc上测试结果如下: libAllJoyn.a编译选项 Chat编译选项 测试结果 -Wall -Werror=non-virtual-dtor -pipe -st ...
- Code Jam 2008 APAC local onsites Problem C. Millionaire —— 概率DP
题意: 你有X元钱,进行M轮赌博游戏.每一轮可以将所持的任意一部分钱作为赌注(赌注为0元表示这一轮不押),赌注可以是小数的,不是一定要整数.每一轮 赢的概率为P,赢了赌注翻倍,输了赌注就没了.如果你最 ...
- 开发一个支持多用户在线的FTP程序
要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 允许用户查看当前目 ...
- 阮一峰博客里面css3的display:flex的布局
- 百度地图开发之poi检索,线路规划
官方文档 http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key 先去官方文档申请秘钥下载压缩文件等操作,参考 百度地图的秘钥申请 ...
- 实用技术——Eclipse 常用快捷键
Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率. 和编辑相关的快捷键 Eclipse中有如下一些和编辑相关的快捷键. 1. [ALT+/] 此快捷键为用户编 ...
- 原来腾讯还出过一个开源项目libco
虽然只能在OpenSUSE上使用,还是应该赞一个的.
- Oracle数据库SQL优化
SQL优化的最终目的是用户体验-在最短时间内让用户在页面数据.因此,执行时间是SQL优化的重要指标.在SQL查询中,I/O操作最占系统性能的.I/O操作量越大,时间越久.减少I/O操作量是优化SQL的 ...
- python 基础——generate生成器
通过列表表达式可以直接生成列表,不过列表一旦生成就需要为所有元素分配内存,有时候会很消耗资源. 所以,如果列表元素可以按照某种算法推算出来,这样就不必创建完整的list,从而节省大量的内存空间. 在P ...