简单的Linux C++多线程CLOCK(时钟)类

/****************************************************
  ***The FileName: clock.cpp
  *****The Author: Frank ****************************
  *******The Mail: frank.love.u@qq.com **************
  ***Created Time: 2018年09月07日 星期五 11时16分44秒
*****************************************************/ #include <iostream> #include <ctime> #include "pthread.h" #include <cstring> #include <cstdlib> #include <unistd.h> #include <cstdio> using namespace std; class Clock { private: struct tm mytime; //用来给对象存储时间的结构体对象 struct tm *p; public: int ret; explicit Clock(void); static void gettime(Clock * s); tm settime(); int setalarm(); static void *timing(void *argc); }; explicit Clock::Clock(void) { pthread_t hd; // 线程数据 time_t temp; //时间结构体对象 time(&temp); //获取系统时间 p=localtime(&temp); //结构体化时间数据 //存入Clock类成员中 mytime.tm_year=p->tm_year; mytime.tm_mon=p->tm_mon; mytime.tm_mday=p->tm_mday; mytime.tm_hour=p->tm_hour; mytime.tm_min=p->tm_min; mytime.tm_sec=p->tm_sec; //开启新的线程让自己的时间跑起来 if((ret=pthread_create(&hd,NULL,timing,(void *)this))!=0) { cout<<"pthread create erorr!"<<endl; exit(0); } cout<<"time running"<<endl; } static void Clock::gettime(Clock * s) { time_t temp; time(&temp); s->p=localtime(&temp); s->mytime.tm_year=s->p->tm_year; s->mytime.tm_mon=s->p->tm_mon; s->mytime.tm_mday=s->p->tm_mday; s->mytime.tm_hour=s->p->tm_hour; s->mytime.tm_min=s->p->tm_min; s->mytime.tm_sec=s->p->tm_sec; } //显示时间函数 char * Clock::showtime() { static char buf[100]; sprintf(buf,"%d年--%d月--%d日   %d:%d:%d",mytime.tm_year+1900,mytime.tm_mon+1,mytime.tm_mday,mytime.tm_hour,mytime.tm_min,mytime.tm_sec); cout<<buf<<endl; return buf; } //自定义设定时间函数 tm Clock::settime() { cout<<"请输入年份:"; cin>>mytime.tm_year; mytime.tm_year=mytime.tm_year-1900; cout<<"请输入月份:"; cin>>mytime.tm_mon; mytime.tm_mon=mytime.tm_mon-1; cout<<"请输入日期:"; cin>>mytime.tm_mday; cout<<"请输入整时:"; cin>>mytime.tm_hour; cout<<"请输入分钟:"; cin>>mytime.tm_min; cout<<"请输入秒钟:"; cin>>mytime.tm_sec; return mytime; } //简单的模仿闹钟   int Clock::setalarm() { int hour,min,sec; cout<<"请输入闹钟整时:"; cin>>hour; cout<<"请输入闹钟分钟:"; cin>>min; cout<<"请输入闹钟秒钟:"; cin>>sec; while(1) { if(mytime.tm_hour==hour) { if(min==mytime.tm_min) { if(sec==mytime.tm_sec) { cout<<"主人,时间到了,闹钟响了,快起床了!\n"<<endl; return 0; } } } } } //线程执行函数 static void * Clock::timing(void *argc) { while(1) { sleep(1); (*((Clock *)argc)).mytime.tm_sec++; if((*((Clock *)argc)).mytime.tm_sec%60==0) { (*((Clock *)argc)).mytime.tm_sec=0; (*((Clock *)argc)).mytime.tm_min++; if((*((Clock *)argc)).mytime.tm_min%60==0) { (*((Clock *)argc)).mytime.tm_min=0; (*((Clock *)argc)).mytime.tm_hour++; if((*((Clock *)argc)).mytime.tm_hour%24==0) { (*((Clock *)argc)).mytime.tm_hour=0; gettime((Clock *)argc); } } } } return NULL; } //主函数内容自己随意调用 int main(void) { Clock obj;//对象创建 obj.showtime(); //显示时间 obj.setalarm(); //设置闹钟时间 obj.showtime(); //显示 obj.settime(); //设置时间 obj.showtime(); while(1) { sleep(1); obj.showtime(); } return 0; }
---------------------  
作者:一眼陌生  
来源:CSDN  
原文:https://blog.csdn.net/m0_38120493/article/details/82740768  
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值