qfedu-linux-advanced-level/day6/thread6.c

37 lines
722 B
C
Raw Normal View History

2023-08-21 19:45:29 +08:00
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
// pthread_detach 的使用
void *task1(void *data)
{
// 提供一个整数值,计算它的阶乘
int n = *((int *)data);
int *ret = (int *)malloc(sizeof(int));
*ret = 1;
while (n)
{
*ret *= n--;
}
printf("%d\n", *ret);
return NULL;
}
int main(int argc, char const *argv[])
{
if (argc != 2)
{
printf("usage: ./%s 数字\n", argv[0]);
}
pthread_t tid;
int num = atoi(argv[1]);
pthread_create(&tid, NULL, task1, (void *)&num);
// detach 分离的线程不能再由此程序处理,归由系统管理
pthread_detach(tid);
sleep(0.5);
return 0;
}