互斥锁 pthread_mutex 的使用BUG,不初始化互斥锁也会生效

项目场景:

在做一个有关于write函数写入是否是原子操作的实践,具体细节不细说只是开个头,参考博客:https://blog.csdn.net/dog250/article/details/78879600


问题描述:

在做实践write原子操作的过程中避免不了就要尝试各种多线程同时写的操作,我尝试了包括:更改open()方式O_APPEND、尝试fopen()、多线程加锁等操作。

在尝试加锁的过程中问题随之而来了。

一开始我写的代码是这样的。

pthread_mutex_t log_lock = PTHREAD_MUTEX_INITIALIZER;


void write1()
{
	char buf[]="111111111111111111111111111111111\n";
	int num=0;
	while(1)
		{
		    pthread_mutex_lock(&log_lock);

			//fwrite(buf,sizeof(buf),1,write_fd);
			fprintf(write_fd, buf);
			//write(write_fd,buf,strlen(buf));
			if(++num>=10000)
				{
				printf("1 ok\n");
				pthread_mutex_unlock
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值