【LinuxC语言】往线程池里添加任务、线程池的销毁和其他操作的实现

文章目录

  • 前言
  • 添加任务
    • 实现流程
    • 函数实现
  • 获取线程池信息
    • 获取线程池工作个数
    • 获取线程池中活着的线程数量
  • 线程池的销毁
    • 实现流程
    • 函数实现
  • 代码概况
  • 总结


前言

在并发编程中,线程池是一种常见的设计模式,它可以有效地管理和控制线程的执行。在Linux C语言环境下,我们可以使用POSIX线程库(pthread)来创建和控制线程池。线程池中的线程可以执行一系列的任务,这些任务通常是独立且相互没有依赖关系的。本文将重点介绍如何在Linux C语言环境下,往线程池里添加任务和进行其他操作。


添加任务

实现流程

这段代码的实现流程是为线程池添加任务的过程,具体步骤如下:

  • 锁定线程池:首先,使用互斥锁mutexPool锁定线程池,确保在添加任务时不会与其他线程发生冲突。
  • 等待队列非满:如果任务队列已满且线程池未关闭,线程将等待notFull条件变量,直到队列中有空间添加新任务。
  • 检查线程池状态:如果线程池已经关闭,则解锁线程池并返回,不再添加任务。
  • 添加任务:将任务函数和参数添加到任务队列的尾部,并更新队列尾部索引和队列大小。
  • 通知工作线程:使用条件变量notEmpty通知工作线程有新任务添加。
  • 解锁线程池:完成任务添加后,解锁线程池,允许其他线程访问。

函数实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode热题100刷题5:189. 轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数

189. 轮转数组 两次翻转&#xff0c;借助swap实现reverse class Solution { public:void reverse(vector<int>& nums, int left, int right) {int ileft, j right-1;while(i<j) {swap(nums[i],nums[j]);i;j--;}}void rotate(vector<int>& nums, int…

从零实现一套低代码(保姆级教程)【运行时】 --- 【30】实现组件的删除和复制功能

摘要 本篇主要来实现一下&#xff0c;在设计器里&#xff0c;对组件进行删除和复制的功能。这一篇不该在运行时的分组里面&#xff0c;但是写到这里来&#xff0c;就继续写下去吧。 因为在设计页面的时候&#xff0c;一定会出现拖拽错组件的情况。所以我们给设计器增加删除组…

MES系统如何支持多品种小批量生产

MES系统&#xff08;制造执行系统&#xff09;在多品种小批量生产环境中发挥着至关重要的作用。它通过一系列先进的技术手段&#xff0c;提高了生产线的灵活性和效率&#xff0c;从而有效地支持了多品种小批量生产。以下是MES系统如何支持多品种小批量生产的详细分析&#xff1…

LVS FILTER UNUSED OPTION

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 过滤一些版图与spice网表对不上的器件。 一般后端遇不到这个问题,因为通常是需要写到网表中的decap没有写出来造成的,如下图。

MYSQL双主双从,使用Keepalived双机热备+LVS高可用群集

MYSQL双主双从&#xff0c;使用Keepalived双机热备LVS高可用群集 ​ 文档只记录KeepalivedLVSmysql主从&#xff0c;不包含检验&#xff0c;如需检验&#xff0c;请自行添加web服务器 一、IP规划 服务器IP备注master1192.168.100.131master2的从master2192.168.100.132maste…

【Matlab 路径优化】基于蚁群算法的XX市旅游景点线路优化系统

基于蚁群算法的XX市旅游景点线路优化系统 &#xff08;一&#xff09;客户需求&#xff1a; ①考虑旅游景点的空间分布、游客偏好等因素&#xff0c;实现了旅游线路的智能规划 ②游客选择一景点出发经过所要游览的所有景点只一次&#xff0c;最后回到出发点的前提下&#xf…

VS2019+QT VS tools:Debug下ok,relese下报错

报错界面 踩得坑&#xff1a; 尝试一下重装 QT VS tools&#xff0c;结果装不上。 尝试卸载原来的QT VS tools&#xff1a;卸载方法&#xff0c;到下面文件夹下可以看到有两个文件夹&#xff0c;分别是两个插件&#xff0c;找到QT的插件&#xff0c;删除文件夹即可。但是删除…

vscode 历史便携版下载方法

VScode安装版 https://update.code.visualstudio.com/版本号/win32-x64-archive/stable https://update.code.visualstudio.com/1.85.2/win32-x64-archive/stablevscode 便携版 vscode 历史版本地址 https://code.visualstudio.com/updates/v1_75#_remote-developmentexe 信…

Centos openssh CVE-2024-6378 漏洞升级

Openssh CVE-2024-6378 漏洞需要升级openssh版本,此次漏洞影响范围>=8.5P1,<9.8P1,当前官方最新版本就是9.8P1,所以必须升级到最新版本 升级方式 由于影响的设备范围很广,如果每台机器手工编译,很浪费时间,所以采取编译RPM包,然后使用RPM包升级的方式来升级 下载…

SQL索引事务

SQL索引事务 索引 创建主键约束(primary key),唯一约束(unique),外键约束(foreign key)时,会自动创建对应列的索引 1.1 查看索引 show index from 表名 现在这个表中没有索引,那么我们现在将这几个表删除之后创建新表 我们现在建立一个班级表一个学生表,并且学生表与班级表存…

HMI 的 UI 风格创新无限

HMI 的 UI 风格创新无限

pyvtk设置lod

LOD&#xff08;Level of Detail&#xff09;是计算机图形学中用于优化渲染性能和显示质量的一种技术。在PyVTK中&#xff0c;可以通过设置不同级别的多边形数据来实现LOD。 以下是一个简单的例子&#xff0c;展示如何在PyVTK中设置LOD&#xff1a; import vtk# 创建一个立方…

Laravel中间件:构建强大Web应用的基石

Laravel中间件&#xff1a;构建强大Web应用的基石 在Laravel框架中&#xff0c;中间件提供了一种强大的方法来过滤HTTP请求和响应。它们可以用于认证用户、授权用户执行特定操作、记录请求信息、处理异常等。本文将详细探讨如何在Laravel中使用中间件&#xff0c;包括创建中间…

什么地方适合安装自动气象站?

随着科技的不断进步&#xff0c;自动气象站在气象观测、环境监测以及科研教学等领域发挥着越来越重要的作用。 一、科研机构和高校校园 科研机构和高校校园是安装自动气象站的理想场所。这些地方拥有专业的科研团队和丰富的教育资源&#xff0c;可以为气象站的建设和运营提供有…

Unity 之基于URP使用UniStorm Weather System天气系统

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity 之基于URP使用UniStorm Weather System天气系统 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、…

守护企业信用 赢得持续发展 路劲境外美元债调整方案获通过

路劲境外美元债调整方案于7月3日经特别决议案大会批准获正式通过&#xff0c;集团存量5笔美元高级债获得同意展期3.5年&#xff0c;1笔美元永续债获得同意将利率重设日期延后3.5年。这一方案的通过&#xff0c;体现了投资人对路劲的经营能力和长远发展的信心&#xff0c;也标志…

掌握高效实用的VS调试技巧

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 1.编程常见的错误 1.1编译型错误 编程编译型错误是指在编译代码时发现的错误。编译器在编译过程中会检查代码是否符合语法规范和语义要求&#xff0c;如果发现错误会产生编译错误。 直接看错误提示信息&#xff08;双击&#…

用asp开发邮件群发功能

在ASP中群发邮件&#xff0c;可以使用CDO (Collaboration Data Objects) 或JMail组件。以下是好代码网使用CDO的一个简单示例&#xff1a; <%配置邮件服务器信息 Dim mail Set mail Server.CreateObject("CDO.Message") mail.Configuration.Fields.Item _("…

数据库安全审计系统:满足数据安全治理合规要求

伴随着数据库信息价值以及可访问性提升&#xff0c;使得数据库面对来自内部和外部的安全风险大大增加&#xff0c;如违规越权操作、恶意入侵导致机密信息窃取泄漏&#xff0c;但事后却无法有效追溯和审计。 国内专注于保密与非密领域的分级保护、等级保护、业务连续性安全和大数…

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

目录 一、什么是 Collabora Online?二、Docker 下载并启动 CODE2.1 拉取镜像2.2 启动镜像2.3 访问界面2.4 补充:nextcloud 的镜像启动三、SpringBoot 实现 WOPI 服务3.1 什么是WOPI?3.2 Spring Boot 简单实现3.3 另一种实现方式3.4 总结四、补充:coolwsd.xml 核心配置介绍c…