找到 177 篇文章 关于 Windows

线程局部存储 (TLS)

Arnab Chakraborty
更新于 2019-10-17 09:03:18

804 次浏览

线程共享其所属进程的数据。这种数据共享提供了多线程编程的优势之一。但是,在某些情况下,每个线程可能需要其自身某些数据的副本。此类数据称为线程局部存储(或 TLS)。例如,在事务处理系统中,我们可能会在单独的线程中为每个事务提供服务。每个事务可能会分配一个唯一的标识符。为了将每个线程与其唯一的标识符关联起来,我们可以使用线程局部存储。很容易将 TLS 与局部变量混淆。在单个函数调用期间,只有局部变量可见,而 TLS ... 阅读更多

什么是线程取消?

Arnab Chakraborty
更新于 2020-01-31 11:07:24

5K+ 次浏览

在线程完成之前终止线程称为线程取消。例如,如果多个线程并发地搜索数据库,并且一个线程返回结果,则可能会取消其余线程。另一种情况可能是当用户按下 Web 浏览器上的按钮以停止 Web 页面进一步加载时。通常,使用多个线程加载 Web 页面——每个图像都在单独的线程中加载。当用户在浏览器上按下停止按钮时,将取消加载页面的所有线程。一个要... 阅读更多

什么是默认信号处理程序?

Arnab Chakraborty
更新于 2019-10-17 09:00:01

1K+ 次浏览

信号是发送到程序的软件中断,以指示已发生重要事件。信号可以通过以下两种可能的处理程序之一进行处理:默认信号处理程序用户定义的信号处理程序默认信号处理程序与内核在处理该信号时运行的每个信号相关联。脚本或程序在收到信号时执行的操作称为默认操作。默认信号处理程序处理这些类型的不同默认操作。一些可能的默认操作是:终止进程。忽略信号。转储核心。它创建一个名为 core 的文件,其中包含... 阅读更多

什么是用户定义的信号处理程序?

Arnab Chakraborty
更新于 2020-01-31 11:05:12

913 次浏览

信号是发送到程序的软件中断,以指示已发生重要事件。信号可以通过以下两种可能的处理程序之一进行处理:默认信号处理程序用户定义的信号处理程序用户定义的信号处理程序可以覆盖此默认操作,该操作称为处理信号。信号以不同的方式处理。一些信号(例如更改窗口的大小)被简单地忽略;其他信号(例如非法内存访问)通过终止程序来处理。信号处理程序函数可以具有任何名称,但必须具有返回类型 void 并且具有一个 int 参数。示例:... 阅读更多

信号和信号处理

Arnab Chakraborty
更新于 2019-10-17 08:55:35

4K+ 次浏览

信号是发送到程序的软件中断,以指示已发生重要事件。这些事件可以从用户请求到非法内存访问错误。一些信号,例如中断信号,表明用户已要求程序执行不属于正常控制流程的操作。根据信号的来源和原因,信号可以是同步的或异步的。所有信号,无论是同步的还是异步的,都遵循相同的模式:特定事件的发生会生成一个信号。接下来,信号被传递... 阅读更多

POSIX 线程库

Arnab Chakraborty
更新于 2019-10-17 08:49:29

878 次浏览

Pthreads 指的是 POSIX 标准 (IEEE 1003.1c),它定义了用于线程创建和同步的 API。这定义了线程行为的规范,而不是实现。规范可以以操作系统设计人员希望的任何方式由操作系统设计人员实现。因此,许多系统实现了 Pthreads 规范;大多数是 UNIX 类型系统,包括 Linux、Mac OS X 和 Solaris。尽管 Windows 本身不支持 Pthreads,但有一些适用于 Windows 的第三方实现可用。图 4.9 中所示的 C 程序演示了用于构建多线程程序的基本 Pthreads API,该程序在单独的线程中计算非负整数的总和。单独的线程... 阅读更多

隐式线程和基于语言的线程

Arnab Chakraborty
更新于 2019-10-17 08:46:49

3K+ 次浏览

隐式线程解决这些困难并更好地支持多线程应用程序设计的一种方法是从应用程序开发人员转移到编译器和运行时库来创建和管理线程。这被称为隐式线程,是当今的一种流行趋势。隐式线程主要是使用库或其他语言支持来隐藏线程的管理。在 C 的上下文中,最常见的隐式线程库是 OpenMP。OpenMP 是一组编译器指令以及用于用 C、C++ 或 FORTRAN 编写的程序的 API,它为共享内存环境中的并行编程提供支持。OpenMP 识别... 阅读更多

C 程序中的 Windows 线程 API

Arnab Chakraborty
更新于 2019-10-16 10:39:12

2K+ 次浏览

线程是在 Windows API 中使用 CreateThread() 函数创建的,并且——就像在 Pthreads 中一样——一组属性(如安全信息、堆栈大小和线程的标志)被传递给此函数。在下面的程序中,我们使用这些属性的默认值。(默认值不会最初将线程设置为挂起状态,而是使其有资格由 CPU 调度程序运行。)创建求和线程后,父线程必须等待它完成才能输出 Sum 的值,因为该值由... 阅读更多

使用 Pthreads API 进行多线程

Arnab Chakraborty
更新于 2019-10-16 08:36:40

2K+ 次浏览

Pthreads 指的是 POSIX 标准 (IEEE 1003.1c),它定义了用于线程创建和同步的 API,这是一个线程行为规范,而不是实现。此规范可以由操作系统设计人员以他们希望的任何方式实现。下面显示的 C 程序演示了用于构建多线程程序的基本 Pthreads API,该程序在单独的线程中计算非负整数的总和。单独的线程在 Pthreads 程序中指定的函数中开始执行。在下面的程序中,这是 runner() 函数。当程序开始时,一个单一的控制线程在 main() 中开始。main()... 阅读更多

多核系统中的编程挑战

Arnab Chakraborty
更新于 2019-10-16 08:29:58

1K+ 次浏览

向多核系统的趋势继续给系统设计人员和应用程序程序员带来压力,要求他们创建更高效地利用多个计算核心的方法。操作系统的设计人员应该编写使用多个处理核心来允许下面所示的并行执行的编程算法:图:多核系统上的并行执行对于应用程序程序员来说,挑战在于用其风格的新程序切换现有程序,这些新程序是多线程的。一般来说,在多核系统编程中存在 5 个方面的挑战:识别任务——这涉及检查应用程序以查找可以划分为单独的、... 阅读更多

广告