基于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++程序设计有所帮助。