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

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

3天内不再提示

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

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

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

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

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

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

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

线程终止函数记录在表 5 中。

表 5. 线程终止函数。

结论

为了减轻中断的影响,操作系统提供了一个由并行运行的进程组成的模型。但是,该模型在交互、自身地址空间的可用性等方面存在弱点。

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

线程可以使用信号量、消息等原语相互交互。这些原语对于使在临界区中不可能同时执行两个或多个线程是必要的。线程可以处于以下状态之一:可运行或执行阻塞。一个线程也可以使用交互原语与另一个线程交互。请记住,在使用交互原语时,应小心避免错误和死锁。

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

审核编辑:郭婷

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

    关注

    87

    文章

    10990

    浏览量

    206733
  • WINDOWS
    +关注

    关注

    3

    文章

    3440

    浏览量

    87143
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121875
收藏 人收藏

    评论

    相关推荐

    服务器操作系统有几种?

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

    linux服务器和windows服务器

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

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

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

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

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

    安装Linuxwindows在哪启动

    )是一个多操作系统引导加载程序,可以管理多个操作系统的启动。它允许用户在系统启动时选择要运行的操作系统。本文将详细介绍 Linux 安装后
    的头像 发表于 11-28 15:02 507次阅读

    LInux 操作系统中断介绍

    LInux 操作系统中断 什么是系统中断 这个没啥可说的,大家都知道; CPU 在执行任务途中接收到中断请求,需要保存现场后去处理中断请求!保存现场称为中断
    的头像 发表于 11-13 11:36 406次阅读
    <b class='flag-5'>LInux</b> <b class='flag-5'>操作系统</b>中断介绍

    什么是LInux 操作系统中断

    LInux 操作系统中断 什么是系统中断 这个没啥可说的,大家都知道; CPU 在执行任务途中接收到中断请求,需要保存现场后去处理中断请求!保存现场称为中断
    的头像 发表于 11-10 11:29 271次阅读
    什么是<b class='flag-5'>LInux</b> <b class='flag-5'>操作系统</b>中断

    linuxwindows的区别

    LinuxWindows是两种不同的操作系统,它们之间的区别包括: 源代码开放性:Linux是开源的,意味着任何人都可以获取并修改其源代码,这为开发者提供了很大的便利性。而
    的头像 发表于 11-08 11:08 2446次阅读

    linux属于什么操作系统

    Linux属于一种类UNIX操作系统Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX
    的头像 发表于 11-08 11:01 1737次阅读

    开源操作系统大全

    开源操作系统即公开源代码的操作系统软件,它遵循开源协议使用、编译和发布。自由和开放源代码软件中最著名的是 Linux ,它是一种类 Unix 的操作系统
    发表于 10-27 15:13

    Windows CE.net操作系统的内核定制

    电子发烧友网站提供《Windows CE.net操作系统的内核定制.doc》资料免费下载
    发表于 10-26 11:23 0次下载
    <b class='flag-5'>Windows</b> CE.net<b class='flag-5'>操作系统</b>的内核定制

    博科结构操作系统REST API参考手册

    电子发烧友网站提供《博科结构操作系统REST API参考手册.pdf》资料免费下载
    发表于 09-01 11:34 0次下载
    博科结构<b class='flag-5'>操作系统</b>REST <b class='flag-5'>API</b>参考手册

    浅谈Linux操作系统的三大部分

    是一种多用户、多任务、支持多种处理器架构的操作系统,它能够运行在各种不同的硬件设备上,包括个人电脑、服务器、移动设备和嵌入式系统等。Linux操作系
    发表于 07-23 12:59 1722次阅读
    浅谈<b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>的三大部分

    LinuxWindows服务器操作系统有什么区别?

    服务器管理员经常接触两种主要的操作系统,即LinuxWindows,那么,我们如何选择适合我们服务器的操作系统呢?当然,首先这两个操作系统
    的头像 发表于 06-01 15:52 990次阅读

    聊聊操作系统

    说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是android(安卓)和iOS
    的头像 发表于 05-12 11:13 1026次阅读
    聊聊<b class='flag-5'>操作系统</b>