线程控制

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)的更多相关文章

  1. Linux Ubuntu运行线程程序出现undefined reference to ‘pthread_create’和undefined reference to ‘pthread_join’错误。

    Linux Ubuntu运行线程程序出现undefined reference to ‘pthread_create’和undefined reference to ‘pthread_join’错误. ...

  2. Linux查看进程线程个数

    1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...

  3. 性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具

    性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在popte ...

  4. 在Linux中使用线程

    我并不假定你会使用Linux的线程,所以在这里就简单的介绍一下.如果你之前有过多线程方面的编程经验,完全可以忽略本文的内容,因为它非常的初级. 首先说明一下,在Linux编写多线程程序需要包含头文件p ...

  5. linux c程序中获取shell脚本输出的实现方法

    linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...

  6. 配置开发支持高并发TCP连接的Linux应用程序全攻略

    http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480 ...

  7. Linux进程或线程绑定到CPU

    Linux进程或线程绑定到CPU 为了让程序拥有更好的性能,有时候需要将进程或线程绑定到特定的CPU,这样可以减少调度的开销和保护关键进程或线程. 进程绑定到CPU Linux提供一个接口,可以将进程 ...

  8. Linux进程和线程的比較

    进程与线程 參考:http://www.cnblogs.com/blueclue/archive/2010/07/16/1778855.html 首先比較Linux进程和线程的创建的差别,以此展开: ...

  9. Linux C++程序进行性能分析工具gprof使用入门

    性能分析工具 软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键.这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是 ...

随机推荐

  1. 基于jQuery的网站首页宽屏焦点图幻灯片

    今天给大家分享一款基于jQuery的网站首页宽屏焦点图幻灯片.这款焦点图适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...

  2. 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行--转载

    原文地址:http://funine.iteye.com/blog/2220359 (本文所有素材将在文章最后附上) 准备工具exe4j, converticon.com(用于制做.ico格式的图片) ...

  3. tachyon with spark

    spark1.2.0  tachyon0.5.0 jdk1.7 scala2.10.4 1.装好spark.tachyon.jdk.scala 2.修改spark-env.sh添加Tachyon客户端 ...

  4. WPF/Silverlight Layout 系统概述——Arrange(转)

    Arrange过程概述 普通基类属性对Arrange过程的影响 我们知道Measure过程是在确定DesiredSize的大小,以便Arrange过程参考这个DesiredSize,确定给MyPane ...

  5. 通过cagradientLayer类封装uiimageview动画色度差

    #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger, EcolorDirectionType) { EcolorDirectionUp, / ...

  6. hadoop环境安装及简单Map-Reduce示例

    说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...

  7. MySQL优化之COUNT(*)效率

    MySQL优化之COUNT(*)效率 刚给一个朋友解决他写的Discuz!插件的问题,说到MySQL的COUNT(*)的效率,发现越说越说不清楚,干脆写下来,分享给大家. COUNT(*)与COUNT ...

  8. web前端开发(5)

    CSS的一些问题: 一般情况下,尽量使用class选择器 解决点击超链接后hover 样式不出现多次问题:a:visited  a:hover 的顺序是问题所在,记住 love hate  L(lin ...

  9. Oracle基础<5>--触发器

    一.触发器 触发器是当特定事件出现时自动执行的代码块.比如,每次对员工表进行增删改的操作时,向日志表中添加一条记录.触发器和存储过程是由区别的:触发器是根据某些条件自动执行的,存储过程是手动条用的. ...

  10. JavaScript 键盘event.keyCode值列表大全

      JavaScript 键盘event.keyCode值列表大全   event.keyCode值列表大全,对于需要根据键盘按键触发相应事件的朋友需要. 网上收集的KeyCode值方便大家查找: k ...