LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

示例demo最简单的demo:线程终止的4种方式

2023年1月19日 48点热度

示例 demo

最简单的 demo:

staticvoid*thread1_func(void*arg)

{inti=0;//abletobecancelpthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);for(i=0;;i++){printf("thread1%dn",i);sleep(1);}}intmain(intargc,char**argv){pthread_tt;void*res;pthread_create(&t,NULL,thread1_func,NULL);sleep(3);pthread_cancel(t);//cancelthread1pthread_join(t,&res);//waitthread1if(res==PTHREAD_CANCELED)printf("thread1wasterminatebycanceln");elseprintf("thread1wasnotterminatebycanceln");exit(EXIT_SUCCESS);}

为了突出重点,省略了检查返回值。

运行效果:

thread10

linux 判断线程是否在运行_c 判断线程正在运行_linux判断线程是否在运行

thread11thread12thread1wasterminatebycancel

主线程先创建线程 thread1虚拟主机 linuxlinux deepin,然后睡眠 3 秒后发出终止 thread1 的请求。

接收到终止请求后,thread1 会在合适的时机被终止掉。

主线程通过 pthread_join() 阻塞等待 thread1 退出。

几个要点线程终止的 4 种方式:

linux判断线程是否在运行_c 判断线程正在运行_linux 判断线程是否在运行

线程的执行函数返回了,这和 main() 函数结束类似。

线程调用了 pthread_exit() 函数,这和调用 exit() 返回类似。

线程被另一个线程通过 pthread_cancel() 函数取消,这和通过kill() 发送 SIGKILL 信号类似。

进程终止了,则进程中的所有线程也会终止。

取消某个线程的常规步骤

linux判断线程是否在运行_c 判断线程正在运行_linux 判断线程是否在运行

被取消的线程:

允许取消,pthread_setcancelstate(),参数可选值:

设置取消类型,pthread_setcanceltype(),参数可选值:

发起取消的线程:

发送取消要求,pthread_cancel(),发出取消请求后,pthread_cancel() 当即返回linux 判断线程是否在运行,不会等待目标线程的退出。

linux判断线程是否在运行_c 判断线程正在运行_linux 判断线程是否在运行

等待取消完成linux 判断线程是否在运行,pthread_join()。

哪些函数是取消点?

POSIX.1 指定了哪些函数一定是取消点:

点击查看大图

更多关于取消点的介绍:

$man7pthreads

Cancellationpoints...accept()aio_suspend()clock_nanosleep()close()...阅读开源软件 MJPG-streamer

MJPG-streamer 是什么?

简单地说,就是一个开源的流媒体服务器:

通过 mjpg-streamer,你可以通过 PC 浏览器访问到板子上的摄像头图像。

MJPG-streamer 是如何结束工作线程的?

MJPG-streamer 运行时一般会有 3 个线程:

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: mjpg-streamer pthread 线程 线程阻塞
最后更新:2023年1月19日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
Linux系统用户系统上的三种类型的帐户的介绍 Linux下的开机启动设置方法是什么?脚本或服务 谷歌更新Linux内核构建的公共内核库:添加对kokoro作业的支持 linux下mysql中可以使用REVOKE语句来删除某个用户的权限 内核的角度来看,调用hotplug和通常的hotplug环境 Linux系统在开机的时候自动加载某些脚本或系统服务 如何在Linux上安装Diablo3操作系统Diablo3 RedHatLinux软件安装包软件后缀为.rpm最初 1.1.4Linux的内核版本和发行版本是什么意思?(图) Linux系统的安装-Ubuntu开启虚拟机安装过程默认注意事项 hello_exit函数代码存放在__init段中(一) 英伟达将LinuxGPU内核模块作为开放源码/MIT双重许可证(图) virtualboxlinux官方版免费、小巧,同时支持Windows、Linux和Mac系统主机 Linux平台下的嵌入式软件要具备说明技能吗? 图解linuxlinux内核结构框图对内核框图有个总体的把握 linux虚拟机的安装步骤是什么?虚拟机和服务器的区别 精通Linux程序设计的高级程序员并非一件可望不可及的事情 linux虚拟机软件 Linux在安装的时候要注意什么?Linux安装注意事项 Python都有哪些应用,学习完成Python后能的工作方向 微软考虑用Rust开发内核的Linux内核-Hartman
Linux5.12的推送请求不断涌入新开放的合并窗口预计4月底看到它的稳定版本go语言被称作互联网时代的c语言,用来开发嵌入式linux的理由腾讯云服务器上也搭建一套环境,安装成功自动启动个人笔记本安装Ubuntu20.04LTS下载地址启动第一步--加载BIOS当你打开计算机电源(组图)虚拟机安装Ubuntu操作系统-Ubuntu空间20G镜像下载指令中各个make-C~/linuxM=`pwd编译Linux启动过程中的几个部分内核的引导(图)如何在Linux上安装虚拟机的结果大多都是怎么安装的一个免费软件时间跟进的小白鼠是什么鬼?专题计算机是如何启动的?、内核操作系统的启动流程学习Linux最简单、最实用的环境就是虚拟机环境(上)基于命令修改文件的权限命令-ld1.Linux磁盘分区和目录Linux发行版本之间的差别很少?国内性价比很高的Linux虚拟主机系统安装的流程是什么?Linux下修改文件权限的权限与所有权的实现就显得很有必要linux到底难不难学呢?推荐可以查看Linux命令大全Linux中修改文件权限的命令、创建者所在组、所有人Linux的内核放在了哪里?/boot的启动目录一览阿里云>社区>主题地图S>查看存储推荐
自定义登录session时要注意的几个小细节,你知道吗? 怎样在Linux中查找进程的PID和PPID什么是Linux进程ID 在Linux服务器中安装Web面板,老左怎么办? 【面试刷图】往期面试题,10篇为一个单位归置 如何在Linux上安装Diablo3操作系统Diablo3 :2管理大部分命令的组成 中科红旗(北京)信息科技有限公司研发的Linux桌面操作系统社区预览版 华为手机刷机软件V1.2.5官方版软件说明软件介绍 学习Linux的8个简单教程,开始你的Linux之旅 Linux的内核放在了哪里?/boot的启动目录一览 php入门到就业线上直播课:linux同步时间的设置 《构建高性能web站点》推荐理由及方法都能找到 一下远程syslogd的配置及应用 Ubuntu18验证dhcp服务器配置是否成功?.04的配置 Intel(R)CPUE5410@2.33GHz看到有8个逻辑 centos系统版本详细信息解决方案与操作系统版本兼容的重要性分析 Linux5.12的推送请求不断涌入新开放的合并窗口预计4月底看到它的稳定版本 Ubuntu这款这款.10版本镜像文件下载地址获取地址! 知识点KaliLinux安装-linux系统基本用法-重新设置root go语言被称作互联网时代的c语言,用来开发嵌入式linux的理由
标签聚合
linux服务器 sudo 软件 linux系统 shell unix 电脑 命令模式 虚拟机 文件目录
书籍
课程
技术群
技术干货大合集↓
  • 2023年2月 / 12篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.