线程的创建及运行

来源:互联网 发布:江苏电信网络测速 编辑:程序博客网 时间:2024/06/06 19:27
#include <stdio.h>#include <pthread.h>#include <unistd.h>void* thread_main(void*);int main(){pthread_t t_id;int thread_param=5;if(pthread_create(&t_id,NULL,thread_main,&thread_param)!=0){puts("pthread_create() error\n");return -1;}sleep(2);puts("end of main");return 0;}void* thread_main(void* arg){int i;int cnt=*((int*)arg);//转换for(i=0;i<cnt;++i){sleep(1);puts("running thread");}}




#include <stdio.h>#include <stdlib.h>#include <string.h>#include <pthread.h>#include <unistd.h>void* thread_main(void*);int main(){pthread_t t_id;int thread_param=5;void* thr_ret;if(pthread_create(&t_id,NULL,thread_main,(void*)&thread_param)!=0){puts("pthread_create error");return -1;}//调试语句//printf("创建线程的ID:%lud\n",(long unsigned int)t_id);if(pthread_join(t_id,&thr_ret)!=0){puts("pthread_join error");return -1;}printf("Thread return message: %s \n",(char*)thr_ret);free(thr_ret);return 0;}void *thread_main(void *arg){int i;int cnt=*((int*)arg);//强制转换char *msg=(char *)malloc(sizeof(char)*50);strcpy(msg,"Hello,I'am thread~\n");for(i=0;i<cnt;++i){sleep(1);puts("running thread");}return (void*)msg;}



#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>int sum=0;void *summation(void *arg){int start=((int*)arg)[0];int end=((int*)arg)[1];while(start<=end){sum+=start;++start;}return NULL;}int main(){pthread_t id_t1,id_t2;//保存线程IDint range1[]={1,5};int range2[]={6,10};pthread_create(&id_t1,NULL,summation,(void*)range1);//创建线程1//调试语句printf("sum:%d\n",sum);pthread_create(&id_t2,NULL,summation,(void*)range2);//创建线程2//调试语句printf("sum:%d\n",sum);//pthread_join(id_t1,NULL);//等待线程id_t1终止//pthread_join(id_t2,NULL);//等待线程id_t2终止//调试//sleep(5);printf("result:%d\n",sum);return 0;}




#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h>#define NUM_THREAD 100typedef long long LL;void* thread_inc(void*);void* thread_des(void*);LL sum=0;int main(){pthread_t thread_id[NUM_THREAD];int i;printf("sizeof long long:%d\n",(int)sizeof(long long));for(i=0;i<NUM_THREAD;++i)//创建100个线程{if(i%2)pthread_create(&thread_id[i],NULL,thread_inc,NULL);elsepthread_create(&thread_id[i],NULL,thread_inc,NULL);}for(i=0;i<NUM_THREAD;++i)pthread_join(thread_id[i],NULL);//等待线程终止printf("result:%lld\n",sum);return 0;}void* thread_inc(void* arg){int i;for(i=0;i<50000000;++i)sum+=1;return NULL;}void* thread_des(void* arg){int i;for(i=0;i<50000000;++i)sum-=1;return NULL;}

原创粉丝点击