当前位置: 首页 > 编程笔记 >

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

邹麻雀
2023-03-14
本文向大家介绍基于C++实现的线程休眠代码,包括了基于C++实现的线程休眠代码的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了基于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++程序设计有所帮助。

 类似资料:
  • 主要内容:1 什么是Java 线程休眠,2 Java sleep()方法语法,3 Java sleep()方法例子1 什么是Java 线程休眠 Thread类的sleep()方法 用于使线程休眠指定的时间。 2 Java sleep()方法语法 Thread类提供了两种使线程休眠的方法: public static void sleep(long miliseconds)throws InterruptedException public static void sleep(long milis

  • 本文向大家介绍Java中线程休眠编程实例,包括了Java中线程休眠编程实例的使用技巧和注意事项,需要的朋友参考一下 JAVA中的休眠是sleep()方法,本例子中定义了getC()方法,该方法用于随机产生Color类型的对象,并且在产生线程的匿名内部类中使用getGraphics()方法获取Graphics对象,使用该对象调用setColor()方法为图形设置颜色;调用drawline()方法绘制

  • 问题内容: 我在hibernate和延迟加载方面遇到问题。 背景:我有一个Spring MVC Web应用程序,我将Hibernate用于持久层。我正在使用OpenSessionInViewFilter使我能够在视图层中延迟加载实体。我正在扩展HibernateDaoSupport类,并使用HibernateTemplate保存/加载对象。一切都进行得很好。直至现在。 问题:我有一个可以通过Web

  • 本文向大家介绍基于C#的socket编程的TCP异步的实现代码,包括了基于C#的socket编程的TCP异步的实现代码的使用技巧和注意事项,需要的朋友参考一下 一、摘要 本篇阐述基于TCP通信协议的异步实现。 二、实验平台 Visual Studio 2010 三、异步通信实现原理及常用方法 3.1 建立连接  在同步模式中,在服务器上使用Accept方法接入连接请求,而在客户端则使用Connec

  • 问题内容: 我在了解线程安全的详细信息时遇到了问题。我知道这本身并不是线程安全的,所以我不会从多个线程访问它们。但是,我找不到有关Hibernate实体的线程安全性的任何信息。我可以在多线程中修改它们,而又仍然将它们附加到用于加载它们的会话中吗? 我不会使用延迟加载(我知道这会导致并发问题)。实体将被正确同步,并且hibernate将通过同步的getter访问它们。 我设想的方案: 使用hiber

  • 问题内容: 能否请您告诉我,我如何才能很好地为Hibernate实体启用Spring自动装配? 假设我有一个实体,并希望在那里有邮件发送者: 有没有比做的更好的方法 在我的DAO中? 谢谢! 问题答案: 有可能的!(这是Spring Roo中的默认样式!) 您所需要做的就是将@Configurable批注添加到您的实体。在配置中并使用AspectJ编织激活注释。 Spring参考中有一章:7.8.