没有合适的资源?快使用搜索试试~ 我知道了~
Microsoft Windows Services for UNIX 3.5 版中的 Pthread 支持
0 下载量 95 浏览量
2020-03-04
12:49:56
上传
评论
收藏 157KB DOC 举报
温馨提示
Microsoft:registered: Windows:registered: Services for UNIX (SFU) 3.5 产品是一个软件包集合,适用于需要使用 Windows 平台的 UNIX 用户和管理员。 此软件包中包含的跨平台网络服务可让您将基于 Windows:registered: 和 UNIX 的环境集成在一起。此软件包中还包含一个完整的称为 Interix 的 UNIX 系统环境,此系统环境在 Windows 上安装和运行,并且与 Windows 子系统并存。 此环境带有数百个 UNIX 实用程序(如 ksh、csh、awk 和 telnet)和一个用于开发 UNIX 应用程序的完整的 C 和 C++ 编程开发环境。随着 SFU 3.5 的发布,此开发环境现在包含对 POSIX 线程 (Pthread) 和 POSIX 信号函数的支持。
资源推荐
资源详情
资源评论
Microsoft Windows Services for UNIX 3.5 版中的 Pthread 支
持
摘要
产品是一个软件包集合,适用于需要使用
平台的 用户和管理员。 此软件包中包含的跨平台网络服务可让您将基于 和 的环境集
成在一起。此软件包中还包含一个完整的称为 的 系统环境,此系统环境在 上安装和
运行,并且与 子系统并存。 此环境带有数百个 实用程序(如 、、和 )和
一个用于开发 应用程序的完整的 !和 !""编程开发环境。随着 的发布,此开发环境现在包含
对 #$线程 #和 #$信号函数的支持。
本白皮书介绍 版本中新的 #支持的特性、功能和实现。
本页内容
简介
# 实现
将 # 源代码移植到
摘要
相关链接
附录 %& 中实现的 #%#
简介
产品是 互操作工具(如 服务器、服务器、客户
端和 '( 服务)的集合。 该产品中还包含 技术——一个在 上运行的完整的
环境。 与其他 系统相似,它包含一个提供基本 功能的操作系统部分,并具有一个由
多个标准 应用程序(包括用于 !、!""和 编程语言的软件开发工具、标头和库)组成的用户
环境部分。
伴随着 )**+年 ,月 的发布,通过在 技术中添加将对
线程(具体地说是 #$线程或 #)的支持,对这一行业领先的互操作性工具集加以改进。 此版本中
的 -.包含一整套 #%#,并且由子系统实现支持这些 %#所必需的 #基础结构。
本白皮书首先简要介绍 #$线程的特性,然后概述 产品中包含的特性,最后介绍有关在 中
实现 #$线程的一些技术细节。
什么是 Interix?
是一个在当前 平台上使用的 环境。 一个完整的 系统由以下几个功能组件构成:
一个子系统、一个实用程序集以及一个软件开发工具包 -.。 子系统与 内核相似,它提供 操
作系统的以下基本功能:读写调用、使用 创建和管理进程、函数以及签名 机制(如信号)、
命名管道 /、符号链接、作业控制以及内存共享。 -.可用于生成或迁移 源代码应用程序,以便可
以在 系统上执行这些应用程序。 环境中提供的许多应用程序都是来自各种 分支(例
如,$01-、1-和 2)的开放源实用程序。 其中许多实用程序只需利用原始源代码简单地重新
编译一下即可迁移到 。
环境看起来与许多 实现非常相似。 它具有单个根文件系统(与安装它的目录相对应),此根文
件系统具有许多常见的目录,例如,3、34、3534、353、353 和 33(。
提供填充这些目录的文件,包括许多大家熟悉的 实用程序,例如,和
外壳程序,和 等小语言,(、和 60等流行实用程序以及 (等 ,,客户端实用程序。
还提供守护程序实用程序(如 、和 7 6),这些实用程序是通过 进程和
33目录中的脚本自动启动的。 还提供 -.,其中包含多种用于生成应用程序的工具,如
6和 6""。还包含许多标头文件和库(如 4、 45和 4,,),可以使将现有 应用程
序迁移到 的过程变得很容易。
从 版开始,包含了对 #$线程和 #$国际化的支持。 此版本提供了许
多新的 %#,并对多个实用程序做了改进以利用此新功能。 例如,实用程序 343 可用于创建在欧洲
和亚洲使用的自定义语言环境。
线程支持的引入是一件非常振奋人心的事情,因为它开创了一种将一个新的实用程序类别从现有 系统迁
移到 和 的方法。
什么是线程?
线程一个进程内的一个独立执行路径。 一个进程内可能会有多个同时运行的线程。 进程与所有这些线程共享进
程的所有系统资源(如内存地址空间、代码和全局数据)。 在一个进程内运行相同或不同过程的多个线程以异
步方式执行。 每个线程都有自己的特定特征和属性,如线程 -、调度优先级、错误号 值、特定于线程
的绑定以及支持此单一控制流所需的系统资源。线程是系统分配处理器时间的基本单元。 线程的执行将根据线
程的优先级和处理器的可用性进行调度。对于多处理器系统,可以安排在每个处理器上执行不同的线程。
在 之前,仅支持允许在单个地址空间内执行单个控制线程的进程。 使用多个进程的应用程序
必须实现某种形式的进程间通信 #!,才能在这些进程之间传送信息。这会导致极大的开销,并可能造成通信
瓶颈。 相比之下,在提供多线程功能的系统上,进程内的线程可共享所有进程资源,如内存和文件描述符。线
程间通信比进程间通信要快得多。
多个线程共享进程资源(如内存和文件描述符)可能会有问题。 要解决的问题是如何避免由于多个线程同时读
取或写入数据所导致的任何潜在数据访问冲突。 可以使用诸如信号和互斥这样的同步技术来避免这种冲突。
总的说来,使用线程而不是使用进程进行编程有许多优点,其中包括:
8
每个线程都可以访问整个地址空间,包括对所有全局变量和文件描述符的访问。
8
与使用进程间构造(如消息队列和共享内存)实现进程间通信和同步相比,在线程间实施通信和同步要快得
多,且容易得多。
8
并行编程通常可以提高程序的性能。
8
并行编程技术非常适合于某些常用软件模型。
8
线程 %#会更容易使用。例如,只有一个线程创建 09%#,而创建进程的 系统调
用则有多个变体
多数 实现都提供 #$线程功能,而且多数开发人员现在都使用标准 #函数来实现线程应用程
序。
什么是 Pthread?
术语 #是 #$:的缩写,#$:是一种编程模型和接口集合,其中对线程的创建、
控制、线程间通信、调度和同步进行了描述。这些信息最早出现在称为 ;;;,**,<,==的 ;;;
#$标准文档中。此标准已合并到 ;;;,**,>,==?;中
1
实现 #的许多厂商发现 #$,接口并不完善,因此,他们对接口进行了扩展来满足各自的线程要求。
这些扩展导致了各种不可移植的专用接口。最终,人们组成了一个小组来负责使这些扩展标准化,并将这些扩
展与原始的 #$,接口融合在一起。 最终结果发布在 3$0!%;0/7(
@>5(3$0!%;规范系统接口和标头,第 期)中。 这个规范经过不断发展,构成了
当前 #$和 标准(如 ;;;,**,<)**,)的基础。
本文档只对线程做一个大致介绍,而将详细介绍 #。 由于 中的 实现依
据的是 #$;;;,**,<,==?和 #$;;;,**,<)**,标准,因此本文档将以这两个标准中定义的
#作为基础进行讨论。
Pthread 中的概念
#中的基本概念包括线程创建、线程终止、线程同步和线程调度。
创建一个进程之后,就会自动创建一个线程。这个线程称为初始线程,并执行 !或 !""程序中的 (例
程。 其他线程是通过显式调用 09例程创建的。 可以使用 09A例程等待另一个线
程完成,而且可以通过 09 或 09 例程终止线程。
剩余17页未读,继续阅读
资源评论
weixin_38704156
- 粉丝: 6
- 资源: 909
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功