创建线程:pthread_create()函数
线程终止:pthread_cancel()函数
等待线程结束:pthread_join()函数
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void* printstr1(void* arg){
printf("thread 1 returning\n");
return (void*)1;
}
void* printstr2(void* arg){
printf("thread 2 exiting");
pthread_exit((void*)2);
}
void* printstr3(void* arg){
while(1){
printf("thread 3 writing");
sleep(2);
}
}
int main()
{
pthread_t tid;
void* tret;
pthread_create(&tid,NULL,&printstr1,NULL);
pthread_join(tid,&tret);
printf("pthread1 %d return %d\n",tid,tret);
pthread_create(&tid,NULL,printstr2,NULL);
pthread_join(tid,&tret);
printf("pthread2 %d exit code %d\n",tid,tret);
pthread_create(&tid,NULL,printstr3,NULL);
sleep(3);
pthread_cancel(tid);
pthread_join(tid,&tret);
printf("pthread3 %d exit code %d\n",tid,tret);
return 0;
}
线程之间的同步和互斥
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int counter = 0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void* update(void* args){
int val = 0;
int i=0;
while(i++<5){
pthread_mutex_lock(&mutex);
val = counter;
// sleep(2);
val++;
printf("phread_id=%x,val=%d\n",pthread_self(),val);
counter=val;
pthread_mutex_unlock(&mutex);
}
return NULL;
}
int main()
{
pthread_t tid1,tid2;
void *tret1,*tret2;
pthread_create(&tid1,NULL,update,NULL);
pthread_create(&tid2,NULL,update,NULL);
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
return 0;
}