【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
对于编写多线程的朋友来说,线程互斥是少不了的。在linux下面,编写多线程常用的工具其实是pthread_mutex_t。本质上来说,它和Windows下面的mutex其实是一样的,差别几乎是没有。希望对线程互斥进行详细了解的朋友可以看这里。
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
static int value = 0;
pthread_mutex_t mutex;
void func(void* args)
{
while(1)
{
pthread_mutex_lock(&mutex);
sleep(1);
value ++;
printf("value = %d!\n", value);
pthread_mutex_unlock(&mutex);
}
}
int main()
{
pthread_t pid1, pid2;
pthread_mutex_init(&mutex, NULL);
if(pthread_create(&pid1, NULL, func, NULL))
{
return -1;
}
if(pthread_create(&pid2, NULL, func, NULL))
{
return -1;
}
while(1)
sleep(0);
return 0;
}
编写mutex.c文件结束之后,我们就可以开始编译了。首先你需要输入gcc mutex.c -o mutex -lpthread,编译之后你就可以看到mutex可执行文件,输入./mutex即可。
[test@localhost thread]$ ./mutex
value = 1!
value = 2!
value = 3!
value = 4!
value = 5!
value = 6!
分享到:
相关推荐
线程如何去创建 ,多线程如何控制输出!互斥控制!
在做多线程开发时,互斥锁是必不可少的。但c语言不像c++11有标准的线程库,在各种编译器支持的平台都可以使用。而且跨平台开发中,在业务逻辑里写不同平台的兼容代码,容易造成过多的冗余,以及代码结构过于复杂的...
以生产者/消费者问题为例来阐述Linux线程的控制和通信。一组生产者线程与一组消费者线程通过缓冲区发生联系。生产者线程将生产的产品送入缓冲区,消费者线程则从中取出产品。缓冲区有N 个,是一个环形的缓冲池。 ...
linxu下c语言多线程编程,同时使用到了限号量,邮箱,互斥信号量,本人亲测可以正常运行,很有参考价值。
Linux C 开发 线程通信 POSIX 条件变量 互斥
linux系统c语言实现爸爸儿子女儿简单消费者问题苹果橘子拿与放问题, 资源共享,线程互斥,使用简单的无名信号量解决
本次课程设计的目标是开发一个用户级线程库,功能包括完整的线程创建/删除/joining,互斥锁,条件变量,以及一个基于优先级的调度器。完成此用户级线程库,可以使用该线程库编写多线程的应用,替代 Linux 中的 ...
两个线程共享变量a,一个负责加一,一个负责输出 通过信号灯的pv操作完成
进程,线程锁。支持windows,linux 。有测试代码和makefile。
包含: 线程池 互斥锁 状态机 任务投递 线程切换 高并发处理。 Makefile编译,使用方便。 可自定义 线程使用数 任务投递数。 适合LINUX C多线程技术,初学者学习和演示。
Windows 2000提供的常用对象可分成三类:核心应用服务、线程同步和...其中,开发人员可以使用线程同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此类对象包括互锁数据、临界段、事件、互斥体和信号等。
3.1.2 Linux下C语言编程环境概述 3.2 常用编辑器 3.2.1 进入vi 3.2.2 初探emacs 3.3 gcc编译器 3.3.1 gcc编译流程解析 3.3.2 gcc编译选项分析 3.4 gdb调试器 3.4.1 gdb使用流程 3.4.2 gdb基本命令 3.5 make工程管理...
在linux下实现了通过互斥信号量实现同步,这个实验模拟了生产者消费者问题
用c语言写的模拟信号量 互斥量 消息队列等线程通讯机制的程序,用来加深对线程通讯的理解
阅览室里有20个座位,外面有10个等待位,若读者来时发现等待位已满则离去。用C语言多线程实现,用信号量实现同步互斥
在多线程开发中一般使用在多个读单个写入的场景,比如将摄像头的画面读取后显示并同时编码推流。c语言做跨平台开发,实现一个共享锁封装对象还是有用的。 本资源在Windows、Linux、Android、IOS都可以使用。 ...
linux 系统C语言模拟哲学家就餐问题,可以帮助理解操作系统中线程互斥锁、互斥资源等的相关概念
本线程池采用C语言实现。包括以下内容 > - thread_pool_create:创建线程池所需要的资源,包含不限于任务队列,子线程的创建。 > - thread_pool_post:用于任务的发布,将执行任务存在任务队列中。 > - thread_pool_...
在Linux环境下进行C编程时,经常会面临一个问题,即需要同时处理多个任务。那么,在这种情况下,我们应该如何设计...本文旨在分享进程和线程编程基础知识,并与大家探讨在C语言中使用进程和线程以及互斥处理的方法。
开发环境:x86计算机,Linux 开发工具:vi ,gcc ,gdb 项目描述: 1. 整个工程分为客户端和服务器端,通过TCP/IP协议通信,使用多文件编译并使用条件编译语句防止重复包含头文件 2. 老师和学生的信息使用单链表保存...