你也可以是一个小小的测试工程师,做一个小小的测试代码,并将测试结果存入文档
demo5.c
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
//int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr,
// void *(*start_rtn)(void *), void *restrict arg);
int g_data = 0;
pthread_mutex_t mutex;
pthread_cond_t cond;
void *func1(void *arg)
{
printf("t1: %ld thread is create\n",(unsigned long)pthread_self());
printf("t1: param is %d\n",*((int *)arg));
static int cnt = 0;
while(1){
pthread_cond_wait(&cond,&mutex);
printf("t1 run =========================\n");
printf("t1: %d\n",g_data);
g_data = 0;
sleep(1);
if(cnt++ == 10){
exit(1);
}
}
}
void *func2(void *arg)
{
printf("t2: %ld thread is create\n",(unsigned long)pthread_self());
printf("t2: param is %d\n",*((int *)arg));
while(1){
printf("t2: %d\n",g_data);
pthread_mutex_lock(&mutex);
g_data++;
if(g_data == 3){
pthread_cond_signal(&cond);
}
pthread_mutex_unlock(&mutex);
sleep(1);
}
}
int main()
{
int ret;
int arg = 100;
pthread_t t1;
pthread_t t2;
pthread_mutex_init(&mutex,NULL);
pthread_cond_init(&cond,NULL);
ret = pthread_create(&t1,NULL,func1,(void *)&arg);
if(ret == 0){
// printf("main:create t1 success\n");
}
ret = pthread_create(&t2,NULL,func2,(void *)&arg);
if(ret == 0){
// printf("main:create t2 success\n");
}
// printf("main:%ld\n",(unsigned long)pthread_self());
pthread_join(t1,NULL);
pthread_join(t2,NULL);
pthread_mutex_destroy(&mutex);
pthread_cond_destroy(&cond);
return 0;
}
test.c
int main(int argc,char **argv)
{
int i;
int time = atoi(argv[1]);
for(i=0;i<time;i++){
system("./pthread");
}
return 0;
}
测试代码并记录进文档:
test.ret.txt 文档: