线程控制

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

最新文章

  1. httpd 安装
  2. 【转载】CentOS 6.3下rsync服务器的安装与配置
  3. sql sever 字符串函数
  4. linux查看和修改当前系统时间
  5. linux磁盘与文件系统的管理
  6. [开发笔记]-Visual Studio 2012中为创建的类添加注释的模板
  7. 2013年8月份第4周51Aspx源码发布详情
  8. 数据结构——N皇后放置方法种数
  9. 文件上传下载样式 --- bootstrap
  10. Lua Behavior Tree For Unity3D(Lua描述行为树For Unity3D)
  11. java内存结构
  12. SmartSql For Asp.Net Core 最佳实践
  13. LeetCode第十三题-将罗马数字转化为数字
  14. SnapKit配置过程记录
  15. npm install、npm install --save与npm install --save-dev区别
  16. 通信原理之TCP/IP基本概念 (二)
  17. Livelock
  18. debian之apt源
  19. ZOJ3591_Nim
  20. strcpy与strncpy

热门文章

  1. Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载
  2. 帧与场 - djf_1985的专栏 - 博客频道 - CSDN.NET
  3. 网络传输速度bps与下载文件所需时间的换算
  4. JavaEE&Docker 容器示例
  5. 从零开始学JAVA(01)-JAVA开发环境安装
  6. 1.7.3 Relevance-相关性
  7. 如何写出好的Java代码?
  8. open source e-business software - prestashop
  9. kindeditor在JavaWeb中的应用
  10. Oracle基础—表分区