linux-j6hs:/home/oyw/testcode/alarm_pthread # cat main.c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
typedef struct struct_alarm
{
int seconds;
char message[64];
}alarm_aliases;
void *alarm_thread(void *arg)
{
alarm_aliases *alarm = (alarm_aliases*)arg;
int status = -1;
status = pthread_detach(pthread_self());
if(0 != status)
printf("pthread_detach failed %d\n", status);
else
printf("pthread_detach success, main thread can do its own work without waiting alar_thread end. \n");
printf("print %s and sleep %d second\n", alarm->message, alarm->seconds);
free(alarm);
}
int main(int argc, char *argv[])
{
int status = -1;
pthread_t thread;
while(1)
{
printf("enter main thread\n");
sleep(2);
if(0 != status)
{
alarm_aliases *alarm = malloc(sizeof(alarm_aliases));
if(NULL == alarm)
{
printf("malloc failed\n");
abort();
}
alarm->seconds = 5;
strcpy(alarm->message, "haha");
status = pthread_create(&thread, NULL, alarm_thread, alarm);
if(0 != status)
{
printf("create alarm_thread fail return %d\n", status);
abort();
}
else
{
printf("pthread_create return %d\n", status);
}
}
}
return 0;
}
编译:gcc main.c -lpthread -o main