c语言线程互斥锁实例

本文通过一个实例展示了如何在C语言中使用互斥锁实现两个线程的同步,其中一个线程读取标准输入,另一个线程将输入数据输出到标准输出。当接收到'end'信号时程序终止。编程时需要注意互斥锁的正确使用,线程执行顺序,条件判断以及子线程的管理。
摘要由CSDN通过智能技术生成

c语言线程互斥锁实例

实验要求

在Linux使用C语言编辑程序使用互斥锁实现两个线程之间同步,一个线程负责从标准输入设备中读取数据,而另一个线程则负责将读入的数据输出到标准输出设备上,当输入“end”时结束该程序。

编写思路

创建线程后通过睡眠进入子线程上锁,判断退出标志,输出提示信息,存入数组解锁,睡眠进入主线程,判断数组内容,
为退出符号时,赋值退出标志,解锁睡眠进入子线程,结束子线程后返回主线程回收子线程退出整个进程
为空解锁睡眠进入子线程上锁输出提示信息,存入数组解锁,睡眠进入主线程,其余情况则打印数据,解锁睡眠进入子线程实现循环

具体代码

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
#include <string.h>
/*创建线程后通过睡眠进入子线程上锁,判断退出标志,
输出提示信息,存入数组解锁,睡眠进入主线程,判断数组内容,
为退出符号时,赋值退出标志,解锁睡眠进入子线程,结束子线程后返回主线程回收子线程退出整个进程
为空解锁睡眠进入子线程上锁输出提示信息,存入数组解锁,睡眠进入主线程
其余情况则打印数据,解锁睡眠进入子线程实现循环*/
void *thread_function(void *arg);
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t work_mutex; /*全局互斥锁对象,首先应该定义一个这样的互斥锁*/
#define WORK_SIZE 1024      /*全局共享数据去*/
char work_area[WORK_SIZE];
int quit = 0; //退出标志

int main(int argc, char *argv[]) 
{
   
    pthread_t a;
    
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值