任务和代码:
#include <pthread.h>
#include <stdio.h>
#include <string.h>
struct operand
{
int data[2];
};
void *addfunc(void *arg)
{
struct operand *pdata = (struct operand *)arg;
int result;
result = pdata->data[0] + pdata->data[1];
pthread_exit((void *)result);
}
int main()
{
int err;
pthread_t tid;
struct operand opdata;
void *add_result;
int real_result;
printf("Please enter two operands:");
scanf("%d %d",&opdata.data[0], &opdata.data[1]);
err = pthread_create(&tid, NULL, addfunc, (void *)&opdata);
if (0 != err)
{
printf("create thread fail:%s", strerror(err));
return -1;
}
err = pthread_join(tid, &add_result);
if (0 != err)
{
printf("wait thread terminates fail:%s", strerror(err));
return -1;
}
real_result = (int)add_result;
printf("%d + %d = %d\n", opdata.data[0], opdata.data[1], real_result);
return 0;
}
运行结果:
心得:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能够独立运行的基本单位。线程基本上不拥有系统资源,只拥有一点运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源。