1. 程式人生 > >簡單的Linux C++多執行緒CLOCK(時鐘)類

簡單的Linux C++多執行緒CLOCK(時鐘)類

剛剛加入CSDN部落格,初來乍到也不知道寫什麼,所以來分享一個自己以前學C++的時候寫的第一個類,一個關於時鐘的簡單的Linux多執行緒CLOCK(時鐘)類:

/****************************************************
  ***The FileName: clock.cpp
  *****The Author: Frank ****************************
  *******The Mail: [email protected] **************
  ***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; }

以上就是今天要分享的所有內容啦,謝謝您的就讀,本人還是個IT界的菜鳥,有大神路過請略過,哈哈,莫嘲笑,嘿嘿,以後有好東西之後再和大家分享,祝各位生活愉快。