0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Windows和Linux操作系统的流式处理API

星星科技指导员 来源:嵌入式计算设计 作者:Eduard Trunov 2022-11-30 15:04 次阅读

对于那些从未使用多个线程编写应用程序但计划将来这样做的人,本文将很有用。

在Windows操作系统中,TerminateThread在成功终止的情况下返回TRUE。从这个逻辑开始,让我们尝试在 Linux 中组织类似的功能。

首先,我们将检查线程是否处于活动状态。为此,我们将发送一个零信号。如果进程中存在线程并且正在执行,则tkill将返回 0。之后,我们将使用PTHREAD_CANCEL_ASYNCHRONOUS参数调用 pthread_setcanceltype 函数,只有在此之后,我们才会尝试通过调用 pthread_cancel 函数来终止线程。有一种可能的情况是线程仍将执行一段时间,为此我们将使用定时等待函数pthread_timedjoin_np(示例中有五次尝试;每次需要 1000 毫秒)。线程终止后,我们将使用PTHREAD_CANCEL_DEFERRED参数再次调用pthread_setcanceltype。如果有任何错误,将始终返回 FALSE。

进程的任何线程都调用 ExitProcess 函数。

如果其中一个线程调用退出函数(对于 Linux 操作系统),或者ExitProcess 或 TerminateProcess(对于 Windows 操作系统),那么整个过程将被终止。同样,如果线程收到操作包含在进程终止中的信号,则该信号将终止整个进程。

让我们总结一下这一切。正确设计的应用程序不应调用强制线程终止函数。推荐的方法是线程函数返回时。如果 Linux 操作系统中的线程终止,联接将释放进程拥有的链接和系统资源。必须适当考虑到调用两次联接函数是不正确的事实(最好会出现错误)。如果 Windows 操作系统的线程被强制终止,请务必注意,应以任何方式清理所有非系统资源。在Linux中,有pthread_cleanup_push和pthread_cleanup_pop函数。

螺纹端接功能记录在表 5 中。

poYBAGOHAKqAVQGLAAAwrqu01fk139.png

表 5.线程终止函数。

结论

为了减轻中断的影响,OS 提供了一个由并行运行的进程组成的模型。但是,此模型有其与交互、自己的地址空间的可用性等相关的弱点。

另一方面,应用程序在一个进程中具有多个控制线程可能是有利的。由于这些线程属于同一进程,因此它们使用自己的堆栈上的共享地址空间。

线程可以使用信号量、消息等基元相互交互。这些原语是必要的,以使在关键部分中无法同时执行两个或多个线程。线程可以处于以下状态之一:可运行或执行受阻。一个线程还可以使用交互基元与另一个线程交互。请记住,在使用交互原语时,应谨慎行事以避免错误和死锁。

在本文中,我们分析了Windows和Linux操作系统的流式处理API;呈现基于事件的线程创建和同步接口;讨论了使用共享资源的函数;以及详细的线程终止方式。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209328
  • WINDOWS
    +关注

    关注

    3

    文章

    3541

    浏览量

    88623
  • 操作系统
    +关注

    关注

    37

    文章

    6801

    浏览量

    123283
收藏 人收藏

    评论

    相关推荐

    如何在windows上emulate不同操作系统

    一、虚拟化技术概述 虚拟化技术允许在单个物理机器上创建多个虚拟机,每个虚拟机都可以运行不同的操作系统。这使得我们可以在Windows系统上模拟其他操作系统,而无需购买额外的硬件。虚拟化
    的头像 发表于 12-05 15:50 155次阅读

    国产实时操作系统:和RT-Linux,Zephyr的实时性对比

    基于RT-Thread内核,并具备POSIX用户态运行环境的高性能实时操作系统。它类似LinuxWindows的架构,具备用户态和内核态(并相分离),用户态具备全地址空
    的头像 发表于 11-12 01:07 666次阅读
    国产实时<b class='flag-5'>操作系统</b>:和RT-<b class='flag-5'>Linux</b>,Zephyr的实时性对比

    linux是实时系统还是分时操作系统

    大家平时玩单片机基本上对于µC/OS、FreeRTOS、ThreadX这些操作系统非常熟悉了,他们都属于实时操作系统(RTOS),在工业领域比较广泛;然而对于linux这样的基于时间片划分的非实时
    的头像 发表于 11-11 11:43 426次阅读

    linux操作系统安装步骤 linux操作系统的特点及组成

    Linux操作系统安装步骤 Linux操作系统是一种开源的操作系统,它以其稳定性、安全性和灵活性而闻名。以下是安装
    的头像 发表于 10-21 11:24 533次阅读

    Windows操作系统是什么?它有哪些特点?

    Windows操作系统是由美国微软公司(Microsoft Corporation)开发和推出的一种计算机操作系统。自1985年Windows 1.0版本发布以来,
    的头像 发表于 08-07 16:30 2394次阅读

    Windows操作系统中的常用命令

    Windows操作系统提供了许多实用的命令行工具,通过命令行界面(Command Prompt)或Windows PowerShell,用户可以执行各种任务,如文件管理、系统维护、网络
    的头像 发表于 08-07 15:40 612次阅读
    <b class='flag-5'>Windows</b><b class='flag-5'>操作系统</b>中的常用命令

    CYAT81658是否支持Windows操作系统

    我们的一位客户要求将触摸集成电路用于他们自己的产品。 他们使用的是 Windows 10 操作系统。 我想知道我们的产品触摸 IC(CYAT81658)是否支持 Windows 操作系统
    发表于 07-05 07:36

    工业实时操作系统对比:鸿道Intewell跟rt-linux有啥区别

    Intewell和RT-Linux是两种不同的实时操作系统(RTOS),它们具有各自独特的特点和优势。以下是Intewell操作系统的一些关键特性,以及与RT-Linux的比较:
    的头像 发表于 07-03 10:00 518次阅读
    工业实时<b class='flag-5'>操作系统</b>对比:鸿道Intewell跟rt-<b class='flag-5'>linux</b>有啥区别

    研华工控机用什么系统WindowsLinux操作系统的较量

    工控机用什么系统WindowsLinux操作系统的较量。工控机(工业控制计算机)作为工业自动化和监控系统的核心组件,其稳定性、可靠性和性
    的头像 发表于 06-14 14:38 687次阅读
    研华工控机用什么<b class='flag-5'>系统</b>?<b class='flag-5'>Windows</b>与<b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>的较量

    服务器操作系统有几种?

    Linux、Unix等等,而人们常常应用的大部 分全是WindowsLinux系统软件。今日,小编就简单的给大伙儿介绍一下这两种常见的网络服务器电脑
    发表于 03-29 16:59

    鸿道(Intewell)操作系统为运动控制系统提供国产工业软件替代方案

    Intewell操作系统运动控制解决方案,采用Windows或者Linux实时扩展架构,满足在Windows系统或者
    的头像 发表于 03-13 16:12 595次阅读
    鸿道(Intewell)<b class='flag-5'>操作系统</b>为运动控制<b class='flag-5'>系统</b>提供国产工业软件替代方案

    linux服务器和windows服务器

    Linux服务器表现出更好的性能和稳定性,因此广泛应用于科学计算、大数据处理和网络服务器等领域。 另一方面,Windows服务器是由微软开发和维护的服务器操作系统,它提供了友好的用户
    发表于 02-22 15:46

    Linux操作系统上的射频测试模式应用指南

    电子发烧友网站提供《Linux操作系统上的射频测试模式应用指南.pdf》资料免费下载
    发表于 02-19 09:39 0次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>上的射频测试模式应用指南

    linuxwindows的区别 linux系统一般用来干嘛

    LinuxWindows是两种不同的操作系统,有着不同的设计理念和用途。本文将对LinuxWindows的区别进行详细分析,并介绍
    的头像 发表于 02-05 14:06 942次阅读

    Linux操作系统中如何按下PCIe的复位键

    Linux操作系统中,看如何按下PCIe的复位键
    的头像 发表于 01-20 09:31 1568次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>中如何按下PCIe的复位键