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;