实验代码
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
int sum = 0;
void *thread_start (void *arg)
{
int i;
int len = *(int*)arg;
for (i = 0; i < len; i++)
{
sum += i;
sleep (1);
printf ("sub thread: sum = %d\n", sum);
}
printf ("sub thread: exit\n");
//pthread_exit (NULL);
exit (0);
}
int main (void)
{
pthread_t tid;
int arg = 10;
pthread_create (&tid, NULL, thread_start, (void *) &arg);
sleep (15);
pthread_cancel (tid);
printf ("main thread: sum = %d\n", sum);
printf ("main thread: exit\n");
return 0;
}
#include <stdio.h>
#include <pthread.h>
#include <errno.h>
#include <stdlib.h>
void * thread_start (void *arg)
{
int arg_data = *((int *)arg);
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 50000; j++);
printf ("received arg%d = %d\n", arg_data, arg_data);
pthread_exit (NULL);
}
}
int main (void)
{
pthread_t tid;
int arg1 = 1;
int arg2 = 2;
int ret = pthread_create (&tid, NULL, thread_start, (void *) &arg1);
if (ret)
{
perror ("pthread_create");
exit (EXIT_FAILURE);
}
thread_start ((void *) &arg2);
return 0;
}