对于那些从未使用多个线程编写应用程序但计划将来这样做的人,本文将很有用。
在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 中。
表 5.线程终止函数。
结论
为了减轻中断的影响,OS 提供了一个由并行运行的进程组成的模型。但是,此模型有其与交互、自己的地址空间的可用性等相关的弱点。
另一方面,应用程序在一个进程中具有多个控制线程可能是有利的。由于这些线程属于同一进程,因此它们使用自己的堆栈上的共享地址空间。
线程可以使用信号量、消息等基元相互交互。这些原语是必要的,以使在关键部分中无法同时执行两个或多个线程。线程可以处于以下状态之一:可运行或执行受阻。一个线程还可以使用交互基元与另一个线程交互。请记住,在使用交互原语时,应谨慎行事以避免错误和死锁。
在本文中,我们分析了Windows和Linux操作系统的流式处理API;呈现基于事件的线程创建和同步接口;讨论了使用共享资源的函数;以及详细的线程终止方式。
审核编辑:郭婷
-
Linux
+关注
关注
87文章
11354浏览量
210657 -
WINDOWS
+关注
关注
4文章
3584浏览量
89481 -
操作系统
+关注
关注
37文章
6905浏览量
123870
发布评论请先 登录
相关推荐
云服务器选择什么操作系统好?
鸿道Intewell操作系统的Windows实时拓展方案
![鸿道Intewell<b class='flag-5'>操作系统</b>的<b class='flag-5'>Windows</b>实时拓展方案](https://file1.elecfans.com/web3/M00/03/A6/wKgZO2dqgUyAeOqZAAK_IQxS0J4970.png)
deepin操作系统介绍
![deepin<b class='flag-5'>操作系统</b>介绍](https://file1.elecfans.com/web3/M00/03/6A/wKgZO2douH-AP8JYAAAkQD5J3-s482.png)
如何在windows上emulate不同操作系统
linux是实时系统还是分时操作系统
linux操作系统安装步骤 linux操作系统的特点及组成
Windows操作系统是什么?它有哪些特点?
Windows操作系统中的常用命令
![<b class='flag-5'>Windows</b><b class='flag-5'>操作系统</b>中的常用命令](https://file1.elecfans.com/web2/M00/01/0A/wKgZomazJUWAJFZVAAAvbHDDnEo201.png)
CYAT81658是否支持Windows操作系统?
工业实时操作系统对比:鸿道Intewell跟rt-linux有啥区别
![工业实时<b class='flag-5'>操作系统</b>对比:鸿道Intewell跟rt-<b class='flag-5'>linux</b>有啥区别](https://file1.elecfans.com/web2/M00/F7/73/wKgZomaEsH2Ad2P6AACEWL2wGtg560.png)
研华工控机用什么系统?Windows与Linux操作系统的较量
![研华工控机用什么<b class='flag-5'>系统</b>?<b class='flag-5'>Windows</b>与<b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>的较量](https://file1.elecfans.com//web2/M00/ED/A0/wKgZomZr5WOAJltxAAFvitZfnEU794.png)
评论