#include <stdio.h>
#include <pthread.h>
void *start(void *rec)
{
static int a = 111;
printf("pid:%ld\n",(unsigned long )pthread_self());
printf("rec :%d\n", *((int *)rec));
pthread_exit((void *)&a);
}
int main(int argc, char const *argv[])
{
int Preturn;
pthread_t pid;
int arg = 10;
int *ptr;
Preturn = pthread_create(&pid,NULL,start,(void *)&arg);
if(Preturn == 0){
printf("pthread creat success\n");
}
printf("mainpid:%ld\n",(unsigned long )pthread_self());
pthread_join(pid,(void **)&ptr);
printf("pthread join :%d\n",*ptr);
return 0;
}
线程其他API
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
int data = 0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
void *start(void *rec)
{
pthread_mutex_lock(&mutex);
while(1){
printf("data:%d\n",data++);
if(data == 3){
pthread_cond_signal(&cond);
}
sleep(1);
}
pthread_mutex_unlock(&mutex);
}
void *start1(void *rec)
{
while(1){
pthread_cond_wait(&cond,&mutex);
printf("data : %d=============\n",data);
data = 0;
}
}
int main(int argc, char const *argv[])
{
int Preturn;
pthread_t pid;
pthread_t pid1;
int arg = 10;
int *ptr;
Preturn = pthread_create(&pid,NULL,start,(void *)&arg);
Preturn = pthread_create(&pid1,NULL,start1,(void *)&arg);
pthread_join(pid,NULL);
pthread_join(pid1,NULL);
pthread_mutex_destroy(&mutex);
pthread_cond_destroy(&cond);
return 0;
}