1.创建一个多线程程序,至少有10个子线程,
每个线程有会打印不同的数据,同时表明身份
- #include
- #include
- #include
- #include
-
- typedef void* (*PFUN)(void* );
-
-
- void* th1(void*arg)
- {
- printf("subthread id%lu\n",pthread_self());
- pthread_exit(0);
- }
- void* th2(void*arg)
- {
- printf("subthread id%lu\n",pthread_self());
- pthread_exit(0);
- }
- void* th3(void*arg)
- {
- printf("subthread id%lu\n",pthread_self());
- pthread_exit(0);
- }
- int main(int argc, char *argv[])
- {
- int i = 0 ;
- PFUN th[5]={th1,th2,th3,th2,th1};
- pthread_t tid[5]={0};
- for(i = 0 ;i<5;i++)
- {
- pthread_create(&tid[i],NULL,th[i],NULL);
- }
-
- for(i=0;i<5;i++)
- {
- pthread_join(tid[i],NULL);
- }
- return 0;
- }
2.
typedef strcut
{
float a;
float b;
char c;//+ - * /
float d;
}JSQ;
主线程,接收一个表达式,填充结构体,传递给th1线程,th1线程结算结果,并返回给主线程。主线程输出结果。
- #include
- #include
- #include
- #include
- typedef struct
- {
- float a;
- float b;
- char c;//+ - * /
- float d;
- }JSQ;
- void* th3(void*arg)
- {
- printf("subthread id%lu\n",pthread_self());
- JSQ*tmp = (JSQ*)arg;
- switch(tmp->c)
- {
- case '+' :
- tmp->d = tmp->a+tmp->b;
- break;
- case '-' :
- tmp->d = tmp->a-tmp->b;
- break;
- case '*' :
- tmp->d = tmp->a*tmp->b;
- break;
- case '/' :
- tmp->d = tmp->a/tmp->b;
- break;
- }
-
- pthread_exit(tmp);
- }
- int main(int argc, char *argv[])
- {
- int i = 0 ;
- pthread_t tid;
- JSQ jsq;
- // 2.3 + 5.4 atof;
- jsq.a =2.3;
- jsq.b = 5.4;
- jsq.c = '+';
-
- pthread_create(&tid,NULL,th3,&jsq);
- void* ret;
- pthread_join(tid,&ret);
- printf("result is %f\n", ((JSQ*)ret)->d);
- return 0;
- }