项目场景:
在做一个有关于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