线程锁实例2---读写加锁实例

简介: #include #include #include struct student{ int a ; int b ; int c ; int d ; int e ; int f ;};char stu[6] = {10,10,10,10,10,10};/...
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
struct student
{
	int a ; 
	int b ; 
	int c ; 
	int d ; 
	int e ; 
	int f ;
};

char stu[6] = {10,10,10,10,10,10};


//初始化一个线程mutex锁  主要用途是防止资源访问竞争
pthread_mutex_t   Mutex = PTHREAD_MUTEX_INITIALIZER ; 

int  write_stu(int value , const char *name);
void read_stu(void);

void *do_thread(void *arg);

int main(void)
{
	pthread_t  tid ; 
//	struct student stu = {10,20};
	int ret ; 
	ret = pthread_create(&tid , NULL , do_thread , (void *)100);
//	ret = pthread_create(&tid , NULL , do_thread , (void *)(&stu));
	if(ret < 0)
	{
		perror("create thread fail");
		return -1 ; 
	}
	
	ret = pthread_detach(tid);
	
	sleep(2);

	write_stu(80 , "main thread");


	return 0 ; 
}
void *do_thread(void *arg)
{
	//写数据函数
	//写数据的时候加把锁,为了防止读和写同时进行
	write_stu(50 , "thread");
	//读数据函数
	read_stu();
}
	
int  write_stu(int value , const char *name)
{
	//总共操作时间用6秒
	int i ; 
	//给一个线程上锁
	//上锁,这时候只写
	pthread_mutex_lock(&Mutex);
	for(i = 0 ; i < 6 ; i++)
	{
		stu[i] = value ; 
		printf("%s write value:%d \n" , name , value);
		sleep(1);
	}
	//写完了,解锁
	pthread_mutex_unlock(&Mutex);
}

//读数据
void read_stu(void)
{
	int i ; 
	for(i = 0 ; i < 6 ; i++)
	{
		printf("stu[%d] : %d \n" , i , stu[i]);
	}
}	

目录
相关文章
|
3月前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
50 2
|
1天前
|
Java 关系型数据库 MySQL
【JavaEE“多线程进阶”】——各种“锁”大总结
乐/悲观锁,轻/重量级锁,自旋锁,挂起等待锁,普通互斥锁,读写锁,公不公平锁,可不可重入锁,synchronized加锁三阶段过程,锁消除,锁粗化
|
29天前
|
供应链 安全 NoSQL
PHP 互斥锁:如何确保代码的线程安全?
在多线程和高并发环境中,确保代码段互斥执行至关重要。本文介绍了 PHP 互斥锁库 `wise-locksmith`,它提供多种锁机制(如文件锁、分布式锁等),有效解决线程安全问题,特别适用于电商平台库存管理等场景。通过 Composer 安装后,开发者可以利用该库确保在高并发下数据的一致性和安全性。
39 6
|
2月前
|
运维 API 计算机视觉
深度解密协程锁、信号量以及线程锁的实现原理
深度解密协程锁、信号量以及线程锁的实现原理
49 2
|
2月前
|
Java 应用服务中间件 测试技术
Java21虚拟线程:我的锁去哪儿了?
【10月更文挑战第8天】
49 0
|
2月前
|
安全 调度 数据安全/隐私保护
iOS线程锁
iOS线程锁
31 0
|
2月前
|
Java API
【多线程】乐观/悲观锁、重量级/轻量级锁、挂起等待/自旋锁、公平/非公锁、可重入/不可重入锁、读写锁
【多线程】乐观/悲观锁、重量级/轻量级锁、挂起等待/自旋锁、公平/非公锁、可重入/不可重入锁、读写锁
43 0
|
2月前
|
安全 Java 程序员
【多线程-从零开始-肆】线程安全、加锁和死锁
【多线程-从零开始-肆】线程安全、加锁和死锁
56 0
|
2月前
|
安全 Linux
Linux线程(十一)线程互斥锁-条件变量详解
Linux线程(十一)线程互斥锁-条件变量详解
|
3月前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
40 0