博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11.2 线程概念
阅读量:5169 次
发布时间:2019-06-13

本文共 1158 字,大约阅读时间需要 3 分钟。

典型的UNIX程序被认为是单线程控制的:每一个进程在一个时刻仅仅做一件事;引入多线程以后,我们可以在单个进程内设计程序同时执行多个任务,该方法有如下几个好处:

  • 我们可以简化异步时间处理的程序的设计:对于每一种时间类型非配一个单独的线程,每一个线程都可以使用同步模型来处理事件,同步编程模型比异步编程模型更加简单。
  • 多进程要实现内存和文件描述符共享需要使用操作系统提供的复杂机制,这一点将在第15章和17章中看到,相反,线程,自动便拥有了同一地址空间内的内存与文件描述符的访问权限。
  • 一些程序可以被分化成为几个单独的任务,从而的提高程序的处理能力。单线程进程处理多任务的时候实际上是串行执行多任务的,因为进程内仅仅只有一个控制线程。采用多线程控制以后,独立任务的处理可以同步执行,方法是为每一个任务分配一个线程,注意,连个任务可以并行执行的条件是二者并不互相依赖。
  • 类似地,交互式程序设计可以使用多线程来改善其相应速度,方法是将程序中处理用户输入与输出的程序划分为一个线程,其他任务使用其他线程实现。

有人会将多线程编程与多处理或者是多核系统联系在一起。而多线程模型的好处即使是在一台单处理器系统上也可是实现,程序设计可以通过多线程而不是多进程来简化设计,因为处理器数量并不影响程序结构。并且,只要程序在串行处理任务时需要阻塞的时候,即使是在一个单处理器机器上,你仍然可以通过多线程来改善程序的相应时间和吞吐量,因为因为一些线程被阻塞的时候,其他线程可以继续运行。

一个线程包含了必要的信息来表示进程执行的上下文环境。其中包含了一个线程ID用于表示进程内的线程,一个寄存器集合,一个堆栈,一个调度优先级以及调度策略,一个信号掩码,以及一个errno变量(1.7节),以及线程独占的数据(thread-specific data,参考12.6节)。进程内的一切都是可以在各线程之间共享,包括可执行程序,程序的全局变量以及堆内存,栈以及文件描述符。
我们即将学习的线程接口源于POSIX.1-2001。The Threads interfaces, also known as “pthreads” for “POSIX threads”,在POSIX.1-2001中是可选的,但是SUSv4将他们移到了基本要求中。对于POSIX threads的特性测试宏是_POSIX_THREADS.应用程序可以在编译时采用#ifdef来进行测试,或者在运行时使用sysconf传参_SC_THREADS常量来测试系统是否支持POSIX线程。符合SUSv4的系统都会定义标识_POSIX_THREADS,其值为200809L

转载于:https://www.cnblogs.com/U201013687/p/5555027.html

你可能感兴趣的文章
input中的name,value以及label中的for
查看>>
静态库制作-混编(工程是oc为基础)
查看>>
jQuery 显示加载更多
查看>>
Confluence 6 系统运行信息中的 JVM 内存使用情况
查看>>
Confluence 6 升级以后
查看>>
用JS实现版面拖拽效果
查看>>
二丶CSS
查看>>
《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
查看>>
JS一些概念知识及参考链接
查看>>
TCP/IP协议原理与应用笔记24:网际协议(IP)之 IP协议的简介
查看>>
SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发
查看>>
游戏中的心理学(一):认知失调有前提条件
查看>>
WHAT I READ FOR DEEP-LEARNING
查看>>
【Ruby】Ruby在Windows上的安装
查看>>
Objective C 总结(十一):KVC
查看>>
BZOJ 3747 洛谷 3582 [POI2015]Kinoman
查看>>
vue实战(7):完整开发登录页面(一)
查看>>
Visual Studio自定义模板(二)
查看>>
【Mood-20】滴滤咖啡做法 IT工程师加班必备 更健康的coffee 项目经理加班密鉴
查看>>
读《构建之法-软件工程》第四章有感
查看>>