基于C++实现的线程休眠代码_技术学院_宜昌市隼壹珍商贸有限公司

您好,欢迎访问宜昌市隼壹珍商贸有限公司

400 890 5375
当前位置: 主页 > 新闻动态 > 技术学院

基于C++实现的线程休眠代码

发布时间:2026-01-18  |  点击率:

本文实例讲述了基于C++实现的线程休眠代码,分享给大家供大家参考。具体方法如下:

linux平台示例如下:

/*
File   : thread1.c
Author  : Mike
E-Mail  : Mike_Zhang@live.com
*/
#include <stdio.h>
#include <pthread.h>
#include <time.h>
void m_threadSleep(int sec,int nsec)
{
  struct timespec sleepTime;
  struct timespec returnTime;
  sleepTime.tv_sec = sec;
  sleepTime.tv_nsec = nsec;
  nanosleep(&sleepTime, &returnTime);
}
void test1()
{
  m_threadSleep(1,0);
  printf("I'm thread1 ...\r\n");
}
void test2()
{
  m_threadSleep(2,0);
  printf("I'm thread2 ...\r\n");
}
int main()
{
  pthread_t thread1,thread2;
  void *result;
  time_t tbegin,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);
  return 0;
}

编译代码如下:

gcc thread1.c -o thread1 -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::xtime getSleepTime(int sec,int nsec)
{
  boost::xtime t;
  boost::xtime_get(&t, boost::TIME_UTC);
  t.sec += sec;
  t.nsec += nsec;
  return t;
}
void test1()
{
  boost::this_thread::sleep(getSleepTime(1,500));
  std::cout <<"I'm thread1 !"<< std::endl;
}
void test2()
{
  boost::this_thread::sleep(getSleepTime(3,500));
  std::cout <<"I'm thread2 !"<< std::endl;
}

int main(int argc, char* argv[])
{
  boost::thread thrd1(&test1);
  boost::thread thrd2(&test2);
  std::time_t t_begin,t_end;
  t_begin = time(NULL);
  thrd1.join();
  thrd2.join();
  t_end = time(NULL);
  std::cout<<t_end-t_begin<<std::endl;
  return 0;
}

编译命令如下:

g++ boost_thread1.cpp -o boost_thread1 -lboost_thread-mt

希望本文所述对大家的C++程序设计有所帮助。

全国统一服务电话

400 890 5375

电子邮箱:879577@qq.com

公司地址:宜昌市西陵区黄河路5号三峡明珠10栋1051室

咨询微信

TEL:13680874598