linux为什么第一个线程运行,第二个不运行呀?

linux为什么第一个线程运行,第二个不运行呀?求指导

/mutex.c/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <errno.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/ioctl.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int lock_var;
time_t end_time;
void pthread1(void *arg);
void pthread2(void *arg);

/*线程一*/
void *thread1(void)
{
pthread_mutex_lock(&mutex);
sleep(5);
int fd;   //定义一个文件描述符
fd = open("read_text",O_RDWR | O_CREAT,0666);
if(-1 == fd)
{
    perror("open");
    exit(1);
}
else
{
    printf("成功打开read_text文件!\n");
}


int ret;
char buf[3] = {0};

fd = open("read_text",O_RDONLY);
if(-1 == fd)
{
    perror("open");
    exit(1);
}

while(read(fd,buf,sizeof(buf)-1))  //一直读到文件末尾,每次读两个字节
{
    printf("%s",buf);
    memset(buf,0,sizeof(buf));  //刷新缓存区
}

if(close(fd)<0)
{
perror("close:");
exit(1);
}
else
  printf("成功关闭read_text文件!\n");
exit(0);
close(fd);

return 0;
pthread_mutex_unlock(&mutex);
    pthread_exit(NULL);
}


/*线程二*/
void *thread2(void)
{
pthread_mutex_lock(&mutex);
int fd,size,len;   //定义一个文件描述符
char *buf="hello world!";

fd = creat("write_text",O_CREAT);   //在当前目录下新建write_text
if(fd < 0)     //返回失败
{
    perror("creat");
    exit(1);
}
else
{
    printf("Creat write_text success!\n");
}

/*close(fd);

return 0;*/

if((size = write(fd,buf,len))<0)
{
    perror("write");
    exit(1);
}
else
    printf("Write:%s\n",buf);

pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}

int main(int argc,char **argv)
{
pthread_attr_t attr;
pthread_attr_init(&attr); //函数初始化
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//设置线程的分离属性
//初始化互斥锁
pthread_mutex_init(&mutex,NULL);

/*1. 创建子线程1*/
pthread_t thread_id;
if(pthread_create(&thread_id,NULL,(void*)thread1,NULL)!=0)
{
    printf("子线程1创建失败.\n");
    return -1;
}
else
{
    printf("线程一创建成功.\n");
sleep(1);
}
/*2. 创建子线程2*/
pthread_t thread_id2;
if(pthread_create(&thread_id2,NULL,(void*)thread2,NULL)!=0)
{
    printf("子线程2创建失败.\n");
    return -1;
}
else
{
    printf("线程二创建成功.\n");
}

/*3. 等待线程的介绍*/
pthread_join(thread_id,NULL);
pthread_join(thread_id2,NULL);

//销毁互斥锁
pthread_mutex_destroy(&mutex);
return 0;

}

给你一个创建多线程参考,你用我这个线程创建两个线程测试一下,再套用你的。

#include <iostream>
// 必须的头文件
#include <pthread.h>
 
using namespace std;
 
#define NUM_THREADS 5
 
// 线程的运行函数
void* say_hello(void* args)
{
    cout << "Hello Runoob!" << endl;
    return 0;
}
 
int main()
{
    // 定义线程的 id 变量,多个变量使用数组
    pthread_t tids[NUM_THREADS];
    for(int i = 0; i < NUM_THREADS; ++i)
    {
        //参数依次是:创建的线程id,线程参数,调用的函数,传入的函数参数
        int ret = pthread_create(&tids[i], NULL, say_hello, NULL);
        if (ret != 0)
        {
           cout << "pthread_create error: error_code=" << ret << endl;
        }
    }
    //等各个线程退出后,进程才结束,否则进程强制结束了,线程可能还没反应过来;
    pthread_exit(NULL);
}