69,368
社区成员
发帖
与我相关
我的任务
分享
#include<pthread.h>
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/time.h>
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void sig_handler(int signo)
{
printf("enter mutex before\n");
pthread_mutex_lock(&mutex);
unsigned long long n = 0;
while(n<10000000000)
{
if(n%10000 == 0)
printf("1");
n++;
}
pthread_mutex_unlock(&mutex);
printf("leave mutex\n");
alarm(1);
}
void *pthread_func(void * arg)
{
alarm(1);
while(1)
{
pthread_mutex_lock(&mutex);
printf("enter mutex thread +++++++\n");
unsigned long long n = 0;
while(n<10000000000)
{
if(n%10000 == 0)
printf("0");
n++;
}
pthread_mutex_unlock(&mutex);
printf("leave mutex thread ------\n");
}
}
int main(int argc, char **argv)
{
pthread_t tid, tid_1;
int retval;
signal(SIGALRM, sig_handler);
if((retval = pthread_create(&tid, NULL, pthread_func, NULL)) < 0)
{
perror("pthread_create");
exit(-1);
}
sigset_t sigset;
sigemptyset(&sigset);
sigaddset(&sigset, SIGALRM);
pthread_sigmask(SIG_SETMASK,&sigset,NULL);
while(1)
{
printf("main pthread\n");
sleep(10);
}
return 0;
}