#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; //保存线程ID
int 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 100
typedef 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);
else
pthread_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;
}