Linux系统编程之pthread多线程与互斥编程

2023-10-26

Linux系统编程之pthread多线程与互斥编程


#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>

int count = 0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;		// 静态初始化

void* thd_print(void* arg)
{
	while(1)
	{
		pthread_mutex_lock(&mutex);

		count++;
		printf("%s : count = %d \r\n", (char *)arg, count);
		if(count > 5)
		{
			pthread_mutex_unlock(&mutex);
			break;
		}

		pthread_mutex_unlock(&mutex);
		usleep(300 * 1000);
	}

	return NULL;
}

int main(void)
{
	pthread_t pid[2];
	char* thdname[] = {"thread1", "thread2"};

	// 创建线程
	pthread_create(&pid[0], NULL, thd_print, thdname[0]);
	pthread_create(&pid[1], NULL, thd_print, thdname[1]);

	// 等待线程退出回收资源
	pthread_join(pid[0], NULL);
	pthread_join(pid[1], NULL);

	printf("Hello World \r\n");

	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统编程之pthread多线程与互斥编程 的相关文章

  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 如何通过替换为空页映射来取消映射 mmap 文件

    Linux 用户空间有没有办法用空页面 映射自 dev null 或者可能是一个空页面 重复映射到从文件映射的页面的顶部 对于上下文 我想找到这个 JDK bug 的修复 https bugs openjdk java net browse
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包

随机推荐

  • 改写对象的行为—多态

    前言 多态 Polymorphism 按字面的意思就是 多种状态 在面向对象语言中 接口的多种不同的实现方式即为多态 引用Charlie Calverts对多态的描述 多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术 赋值之后
  • 成功解决curl: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file...

    最近在执行下述命令连接外网时 遇到了下述问题 求助多方后终于找到解决方法 很简单 未安装curl库 所以很简单 pip install curl 由于我这里已经安装过了 所以无需再安装 完美解决
  • echarts tooltip悬浮框内容显示不全,如何解决

    前言 项目使用echarts过程中 鼠标移上去 悬浮框显示的内容太多 导致显示不全 或者需要自定义显示内容时 如何解决 现在提供一个简单的方法 简单示例 代码如下 示例 tooltip trigger item enterable true
  • IDEA在MAC环境中的使用小技巧

    最近 转战MacOS的平台进行代码开发 有一天 突然发现 IDEA中同样启动一个springboot项目往往需要20多秒钟 如下截图中所示 这就让我感到比较奇怪了 因为本身机器配置也没那么差 关键 我同时还在WINDOWS平台上也正在对这个
  • 全能电子地图下载器-获取离线地图瓦片的工具

    百度网盘 1 9 5早期版本 链接 https pan baidu com s 1k9QL3mJXDus6O071HSBrHA 提取码 bib6 打开百度网盘并解压以后 你得到的东西是这些 3 0最新版本 链接 百度网盘 请输入提取码 提取
  • 竖式问题 rust解法

    竖式问题 输入一个数字集合 数字之间没有空格 找出所有形如abc de 三位数乘以两位数 的算式 在完整的竖式中 所有数字都属于这个数字集合 输出所有竖式 每个竖式前应有编号 之后应有一个空行 样例输入 2357 输出 lt 1 gt 77
  • python中add函数_如何使用python中的add函数?

    之前向大家介绍过python中的求和函数sum函数 numpy中的sum函数 对于数组可以指定维度进行相加 numpy中还有另一种求和运算方法 即add函数 add函数不仅作用于numpy中加法运算 还用于set中添加元素 本文主要向大家介
  • uniapp - APP云打包、蒲公英平台发布APP的步骤

    一 uniapp 云打包 1 注册 dcloud 开发者 首先需要注册一个 dcloud 开发者的账号 dcloud开发者中心 登录 dcloud net cn 根据流程注册即可 2 云打包 已安卓为例 项目创建完成后 查看 dcloud
  • Python连接Gbase数据库

    在数据清洗和计算方面 Python比SQL的灵活性更强 本文记录使用Python读取Gbase数据库中的数据 建立数据库连接 无论什么方法读取读取或操作数据库中的数据 首先要建立数据库连接对象 import pandas as pd imp
  • 如何学习python(附实际操作方法)

    人工智能在发展 Python作为人工智能的首选语言 自然也越来越火爆 现在 Python可以说是备受程序员欢迎的编程语言了 但是 有很多同学却不知道该从何处下手 接下来小编就跟大家聊聊吧 首先 我们要准备一台电脑 Windows7 10系统
  • parted3 Linux分区命令

    原贴地址 http www junfcom cn post 184 html Parted是一个着名的命令行工具 可以轻松管理硬盘分区 它可以帮助您添加 删除 缩小和扩展磁盘分区及其上的文件系统 从第一次出来 分手已经走了很长的路 其中一些
  • 谈谈管理者绩效管理要点

    作者 李石 链接 https www zhihu com question 19626322 answer 29165823 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 在绩效管理中衡量一个管理者的绩效与
  • 2023-05-22 题目

    1 java的泛型 泛型是jdk 5 引入的 泛型就是 引用类型作为参数 本质就是参数化类型 1 类型擦除 java的泛型基本上都是在编译器这个层次来实现的 在生成的字节码文件中是不包含泛型类中的信息的 泛型参数在编译的时候被去掉的过程叫做
  • 关于安卓系统安全性的问题

    引言 很久以前有人声称使用安卓系统不安全 称其获取的用户权限过多 太过于暴露用户的隐私 很多人在贴下反讽 只是你不会使用权限管理而已 而实际上现在 很多安卓应用程序一旦禁用了某些权限就直接限制用户的使用 完全就是一种流氓姿态 限制权限已经不
  • 前端学习路线(2023)

    这个前端学习路线看起来很详细和全面 涵盖了从基础知识到高级框架 从单机开发到全栈项目 从混合应用到原生应用 从性能优化到架构设计的各个方面 如果你能够按照这个路线学习和实践 我相信你一定能够成为一名优秀的前端工程师 不过 我也要提醒你 这个
  • ModuleNotFoundError: No module named 'encodings'

    问题描述 Fatal Python error Py Initialize unable to load the file system codec ModuleNotFoundError No module named encodings
  • 三极管和MOS管的使用及区别

    1 三极管 单片机IO口输出高电平时 三极管导通 单片机IO口输出低电平时 三极管截止 1 三极管是电流控制型元件 三极管的BE之间可以理解为存在一个二极管的通路 当给B加高电平时 BE之间就会产生持续的电流 维持三极管打开的条件就是BE之
  • 101.对称二叉树

    给定一个二叉树 检查它是否是镜像对称的 例如 二叉树 1 2 2 3 4 4 3 是对称的 1 2 2 3 4 4 3 但是下面这个 1 2 2 null 3 null 3 则不是镜像对称的 1 2 2 3 3 方法1 根左右遍历一次树得到
  • 微信小程序个人简历界面(编辑版)

    微信小程序个人简历界面 可编辑修改 包含全部源码 1 微信小程序实现简单的个人简历界面 包含基本信息 教育背景 获奖证书 兴趣爱好等 简历信息支持修改编辑内容 2 通过此文章 希望能带给更多学习微信小程序的伙伴们一点点经验 示例简洁 布局简
  • Linux系统编程之pthread多线程与互斥编程

    Linux系统编程之pthread多线程与互斥编程 include