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
    +关注

    关注

    88

    文章

    11817

    浏览量

    219555
  • WINDOWS
    +关注

    关注

    4

    文章

    3706

    浏览量

    94327
  • 操作系统
    +关注

    关注

    37

    文章

    7437

    浏览量

    129621
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    操作系统运行机制

    不同的层次上。一些与硬件关联较紧密的模块,诸如时钟管理、中断处理、设备驱动等处于最底层。其次是运行频率较髙的程序,诸如进程管理、存储器管理和设备管理等。这两部分内容构成了操作系统的内核。这部分内容的指令
    发表于 01-15 07:12

    Linux 已够强,国产操作系统为何仍要坚持?

    在中国做技术的人,或多或少都有过这样的疑问: “Linux 都这么成熟、这么好用了,国产操作系统还有必要搞吗?” 这不是少数人的困惑,而是整个行业几十年来反复讨论的问题。 但如果你深入工业、能源
    的头像 发表于 12-25 16:11 488次阅读

    什么是嵌入式操作系统

    要理解嵌入式操作系统(Embedded Operating System,简称 RTOS/EOS),我们可以从本质定义→核心区别→实际作用→典型特征→嵌入式开发场景适配,五个维度来拆解, 一
    发表于 12-09 10:33

    系统调用和API有什么区别呢?

    们提供的“API”。 通过这些操作系统提供的API,我们可以创建进程、创建线程、读写文件等等,同时我们也根本不需要关心操作系统是如何创建进程、线程的等等。 可是,
    发表于 12-03 06:52

    EV10AS180A模数转换器支持哪些操作系统

    应用。EV10AS180A转换器本身并不直接依赖或支持特定的操作系统,其核心功能是完成模拟信号到数字信号的转换,属于硬件层面的数据处理设备。硬件独立性:EV10AS180A作为一款高性能ADC,其工作原理
    发表于 11-18 09:18

    单片机的操作系统

    。 ‌ ‌ RT-Thread ‌:国产开源系统,集成GUI、网络协议栈、文件系统等组件,兼容POSIX接口,适合物联网设备。 ‌ 嵌入式操作系统 ‌ μClinux ‌:针对无MMU处理
    发表于 11-14 06:18

    嵌入式实时操作系统的特点

    任务的系统。 实时嵌入式操作系统与传统的桌面操作系统相比,更注重对实时任务的响应和精确控制。它们在资源利用、可靠性、可预测性、任务调度和中断处理等方面提供了更加严格的要求和机制。 实时
    发表于 11-13 06:30

    请问如何在e203中安装linux操作系统

    本人用的板子是Xilinx的XC7A100TFGG484-2L,编译软件是vivado2017.4。目前比特流已经成功生成,我已经把其固化进了板子中。现在的我想在我固化后的板子里面装一个linux操作系统,应该如何做?
    发表于 11-07 07:32

    Jtti Linux操作系统最常见的10大优势

    Linux操作系统的十大优势 Linux操作系统作为一种开源、自由的系统,已经广泛应用于个人计算机、服务器、嵌入式设备等多个领域。它的多样化
    的头像 发表于 11-06 15:32 463次阅读

    手持机PDA三大操作系统Android / 开源鸿蒙 / Windows对比

    本文全面解析手持机PDA主流操作系统(Android和开源鸿蒙和Windows)的技术特点、区别及适用场景,帮助企业根据自身业务需求选择合适的系统。包含多维度对比表格和实用选型建议。
    的头像 发表于 09-23 15:41 1280次阅读
    手持机PDA三大<b class='flag-5'>操作系统</b>Android / 开源鸿蒙 / <b class='flag-5'>Windows</b>对比

    树莓派操作系统:版本、特性及设置完整指南!

    树莓派操作系统是什么?树莓派操作系统是由树莓派基金会专为树莓派开发的官方操作系统。它基于DebianLinux发行版,并针对树莓派的ARM架构进行了专门优化。树莓派操作系统有多个版本,
    的头像 发表于 07-28 18:26 1812次阅读
    树莓派<b class='flag-5'>操作系统</b>:版本、特性及设置完整指南!

    龙芯处理器支持WINDOWS吗?

    龙芯处理器目前不支持原生运行Windows操作系统,主要原因如下: 架构差异 龙芯架构:龙芯早期基于MIPS架构,后续转向自主研发的LoongArch指令集(与x86/ARM不兼容
    发表于 06-05 14:24

    聚徽厂家解码——工控机操作系统选择:WindowsLinux、QNX 如何匹配工业场景

    在工业自动化进程不断推进的当下,工控机作为核心设备,其操作系统的恰当选择对工业生产的稳定性、高效性和安全性起着决定性作用。常见的 WindowsLinux 和 QNX 操作系统,各自
    的头像 发表于 05-29 16:28 1855次阅读

    如何设置 Raspberry Pi 操作系统 Windows 模拟器:完全指南!

    为何要在Windows上模拟树莓派操作系统?在Windows上模拟树莓派操作系统是利用虚拟化技术进行开发、测试和学习,而无需物理树莓派硬件,这是一种强大的方式,并且允许您在Window
    的头像 发表于 05-20 16:23 1478次阅读
    如何设置 Raspberry Pi <b class='flag-5'>操作系统</b> <b class='flag-5'>Windows</b> 模拟器:完全指南!

    Windows上Y8的流媒体FPS低于Y12是什么原因造成的?

    会出现任何延迟。 但是当谈到 Y8 时,它在 Windows 中的流式传输速度为 20FPS,在 Linux 中的流式传输速度为 30FPS,并且
    发表于 05-07 08:20