基于C++实现的线程休眠代码
本文实例讲述了基于C++实现的线程休眠代码,分享给大家供大家参考。具体方法如下:
linux平台示例如下:
/* File:thread1.c Author:Mike E-Mail:Mike_Zhang@live.com */ #include<stdio.h> #include<pthread.h> #include<time.h> voidm_threadSleep(intsec,intnsec) { structtimespecsleepTime; structtimespecreturnTime; sleepTime.tv_sec=sec; sleepTime.tv_nsec=nsec; nanosleep(&sleepTime,&returnTime); } voidtest1() { m_threadSleep(1,0); printf("I'mthread1...\r\n"); } voidtest2() { m_threadSleep(2,0); printf("I'mthread2...\r\n"); } intmain() { pthread_tthread1,thread2; void*result; time_ttbegin,tend; tbegin=time(NULL); pthread_create(&thread1,NULL,(void*)&test1,NULL); pthread_create(&thread2,NULL,(void*)&test2,NULL); pthread_join(thread1,&result); pthread_join(thread2,&result); tend=time(NULL); printf("%d\r\n",tend-tbegin); return0; }
编译代码如下:
gccthread1.c-othread1-lpthread
boost库实现示例如下:
/* File:boost_thread1.cpp Author:Mike E-Mail:Mike_Zhang@live.com */ #include<boost/date_time/posix_time/posix_time.hpp> #include<boost/thread/thread.hpp> #include<iostream> boost::xtimegetSleepTime(intsec,intnsec) { boost::xtimet; boost::xtime_get(&t,boost::TIME_UTC); t.sec+=sec; t.nsec+=nsec; returnt; } voidtest1() { boost::this_thread::sleep(getSleepTime(1,500)); std::cout<<"I'mthread1!"<<std::endl; } voidtest2() { boost::this_thread::sleep(getSleepTime(3,500)); std::cout<<"I'mthread2!"<<std::endl; } intmain(intargc,char*argv[]) { boost::threadthrd1(&test1); boost::threadthrd2(&test2); std::time_tt_begin,t_end; t_begin=time(NULL); thrd1.join(); thrd2.join(); t_end=time(NULL); std::cout<<t_end-t_begin<<std::endl; return0; }
编译命令如下:
g++boost_thread1.cpp-oboost_thread1-lboost_thread-mt
希望本文所述对大家的C++程序设计有所帮助。