7.19IO
思维导图
第一题:测试错误检查锁和递归锁是否会造成死锁状态
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;pthread_mutex_t m1;
pthread_mutex_t m2;void *run(void* arg)
{while(1){pthread_mutex_lock(&m1);printf("a\n");sleep(1);}
}int main(int argc, const char *argv[])
{pthread_t id;pthread_create(&id,0,run,0);pthread_detach(id);pthread_mutexattr_t attr;pthread_mutexattr_init(&attr);pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ERRORCHECK_NP);pthread_mutex_init(&m1,&attr);pthread_mutex_init(&m2,&attr);while(1){pthread_mutex_lock(&m2);printf("A\n");sleep(1);}return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;pthread_mutex_t m1;
pthread_mutex_t m2;void *run(void* arg)
{while(1){pthread_mutex_lock(&m1);printf("a\n");sleep(1);}
}int main(int argc, const char *argv[])
{pthread_t id;pthread_create(&id,0,run,0);pthread_detach(id);pthread_mutexattr_t attr;pthread_mutexattr_init(&attr);pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);pthread_mutex_init(&m1,&attr);pthread_mutex_init(&m2,&attr);while(1){pthread_mutex_lock(&m2);printf("A\n");sleep(1);}return 0;
}