char buf[]="1234567",不同线程输出
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<pthread.h>
#include<string.h>
char buf[]="1234567";
//线程A:正向循环输出
void * callfunc(void * buf)
{
sleep(0.2);
//循环正向打印
while(1)
{
sleep(0.5); //控制输出频率
printf("__%d__%s\n",__LINE__,((char *)buf));
}
pthread_exit(NULL);
}
//线程B:循环倒置输出
void * callfunc1(void *buf)
{
sleep(1);
int n=strlen((char *)buf);
while(1)
{
sleep(0.5);
//三杯水交换
for(int i=0;i<(n/2+1);i++)
{
char temp=((char *)buf)[n-i-1];
((char *)buf)[n-i-1]=((char *)buf)[i];
((char *)buf)[i]=temp;
}
printf("__%d__",__LINE__);
//循环输出
for(int i=0;i<n;i++)
{
printf("%c",((char *)buf)[i]);
}
printf("\n");
}
pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{
//定义两个线程tid号
pthread_t tid,tid1;
//创建线程A并判断
if(pthread_create(&tid,NULL,callfunc,((void *)buf))!=0)
{
fprintf(stderr,"pthread_create failde __%d__\n",__LINE__);
return -1;
}
//分离线程A
pthread_detach(tid);
//创建线程B并判断
pthread_create(&tid1,NULL,callfunc1,((void *)buf));
//阻塞函数等待线程B结束
pthread_join(tid1,NULL);
return 0;
}
时间
#include<time.h>
#include<stdio.h>
#include <pthread.h>
#include<sys/types.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
//分支线程执行时钟任务
void * callfunc(void *arg)
{
time_t t;
struct tm *timep=NULL;
while(1)
{
system("clear");
//获取实时时间
t=time(NULL);
//将获取的时间转换
timep=localtime(&t);
if(NULL==timep)
{
perror("localtime");
return -1;
}
fprintf("%d-%02d-%02d %02d:%02d:%02d\r",timep->tm_year+1900,timep->tm_mon+1,\
timep->tm_mday, timep->tm_hour,timep->tm_min,timep->tm_sec);
fflush(stdout);
}
return NULL;
}
int main(int argc, const char *argv[])
{
char str [10]="";
pthread_t tid;
//创建分支线程并判断
if((pthread_create(&tid,NULL,callfunc,NULL))!=0)
{
fprintf(stderr,"pthread_create filed__%d__",__LINE__);
return -1;
}
//获取终止条件并判断
scanf("%s",str);
if(0==(strcasecmp(str,"quit")))
{
return 0;
}
}