timers.cpp

来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· C++ 代码 · 共 83 行

CPP
83
字号
// $Id: Timers.cpp 78965 2007-07-20 08:51:10Z johnnyw $#include "ace/config-all.h"#include "ace/OS_main.h"#if !defined (ACE_LACKS_FORK)#include "ace/streams.h"#include "ace/OS_NS_unistd.h"#include "ace/OS_NS_time.h"#include "ace/OS_NS_signal.h"typedef void (*timerTask_t)(void);// Listing 1 code/ch07pid_t timerTask (int initialDelay,                 int interval,                 timerTask_t task){  if (initialDelay < 1 && interval < 1)    return -1;  pid_t pid = ACE_OS::fork ();  if (pid < 0)    return -1;  if (pid > 0)    return pid;  if (initialDelay > 0)    ACE_OS::sleep (initialDelay);  if (interval < 1)    return 0;  while (1)    {      (*task) ();      ACE_OS::sleep (interval);    }  ACE_NOTREACHED (return 0);}// Listing 1// Listing 2 code/ch07void foo (){  time_t now = ACE_OS::time (0);  cerr << "The time is " << ACE_OS::ctime (&now) << endl;}// Listing 2void programMainLoop (void){  ACE_OS::sleep (30);}// Listing 3 code/ch07int ACE_TMAIN (int, ACE_TCHAR *[]){  pid_t timerId = timerTask (3, 5, foo);  programMainLoop ();  ACE_OS::kill (timerId, SIGINT);  return 0;}// Listing 3#else#include "ace/OS_NS_stdio.h"int ACE_TMAIN (int, ACE_TCHAR *[]){  //FUZZ: disable check_for_lack_ACE_OS  ACE_OS::puts ("This very unportable example requires fork().\n");  //FUZZ: enable check_for_lack_ACE_OS  return 0;}#endif /* ACE_LACKS_FORK */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?