#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
void* pthreadRun(void* arg)
{
int count = 3;
while(count--)
{
printf("new pthread,tid:%lu,pid:%d\n",pthread_self(),getpid());
}
}
int main()
{
pthread_t tid = 0;
int ret = pthread_create(&tid,NULL,pthreadRun,NULL);
if(ret != 0)
{
perror("pthread_create");
return -1;
}
if(ret != 0)
{
perror("pthread_detach");
return -1;
}
sleep(1);
if(pthread_cancel(tid)!= 0)
{
printf("cancel failed\n");
return 1;
}
int exitCode;
pthread_join(tid,(void**)&exitCode);
printf("new pthread exit code:%d\n",exitCode);
return 0;
}
這段程序的運行結果是:
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
void* pthreadRun(void* arg)
{
int count = 3;
while(count--)
{
printf("new pthread,tid:%lu,pid:%d\n",pthread_self(),getpid());
sleep(1);
}
}
int main()
{
pthread_t tid = 0;
int ret = pthread_create(&tid,NULL,pthreadRun,NULL);
if(ret != 0)
{
perror("pthread_create");
return -1;
}
usleep(1000);
ret = pthread_detach(tid);
if(ret != 0)
{
perror("pthread_detach");
return -1;
}
if(pthread_cancel(tid)!= 0)
{
printf("cancel failed\n");
return 1;
}
int exitCode;
if(0 == pthread_join(tid,(void*)&exitCode))
{
printf("wait success.\n");
printf("new pthread exit code:%d\n",exitCode);
}
else
{
printf("wait failed\n");
}
return 0;
}
程序運行結果:#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
static int count = 0;
void* pthreadRun(void* arg)
{
int val = 0;
int i = 0;
while(i < 5000)
{
val = count;
printf("new pthread,tid:%lu,pid:%d,count:%d\n",pthread_self(),getpid(),count);
count = val + 1;
i++;
}
return NULL;
}
int main()
{
pthread_t tid1 = 0;
pthread_t tid2 = 0;
int ret = pthread_create(&tid1,NULL,pthreadRun,NULL);
if(ret != 0)
{
perror("pthread_create");
return -1;
}
ret = pthread_create(&tid2,NULL,pthreadRun,NULL);
if(ret != 0)
{
perror("pthread_create");
return -1;
}
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
printf("count:%d\n",count);
return 0;
}
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
static int count = 0;
pthread_mutex_t myLock = PTHREAD_MUTEX_INITIALIZER;
void* pthreadRun(void* arg)
{
int val = 0;
int i = 0;
while(i < 3000)
{
pthread_mutex_lock(&myLock);
val = count;
printf("new pthread,tid:%lu,pid:%d,count:%d\n",pthread_self(),getpid(),count);
count = val + 1;
i++;
pthread_mutex_unlock(&myLock);
}
return NULL;
}
int main()
{
pthread_t tid1 = 0;
pthread_t tid2 = 0;
int ret = pthread_create(&tid1,NULL,pthreadRun,NULL);
if(ret != 0)
{
perror("pthread_create");
return -1;
}
ret = pthread_create(&tid2,NULL,pthreadRun,NULL);
if(ret != 0)
{
perror("pthread_create");
return -1;
}
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
pthread_mutex_destroy(&myLock);
printf("count:%d\n",count);
return 0;
}