⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scheduler.h

📁 这是一个著名的应用层组播中间件的源码
💻 H
字号:
//Copyright (c) 2004, Charles Killian, Adolfo Rodriguez, Dejan Kostic, Sooraj Bhat, and Amin Vahdat//All rights reserved.////Redistribution and use in source and binary forms, with or without//modification, are permitted provided that the following conditions are met:////   * Redistributions of source code must retain the above copyright//     notice, this list of conditions and the following disclaimer.//   * Redistributions in binary form must reproduce the above copyright//     notice, this list of conditions and the following disclaimer in//     the documentation and/or other materials provided with the//     distribution.//   * Neither the names of Duke University nor The University of//     California, San Diego, nor the names of its contributors//     may be used to endorse or promote products derived from//     this software without specific prior written permission.////THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"//AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE//IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE//DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE//FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL//DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR//SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,//OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE//USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#ifndef SCHEDULERH#define SCHEDULERH#include <pthread.h>#include <sys/time.h>       #include <unistd.h>#include <list>#include <set>using namespace std;#define CLOCK_RESOLUTION 0.001extern class Scheduler *globalsched;class Event{ public:  int trash;};class TimerHandler;class delta_list_entry{ public:  TimerHandler *timer;  double expiration;};class Scheduler{ public:  Scheduler();  static Scheduler& instance() {    return (*globalsched);            // general access to scheduler  }  pthread_t killer;  pthread_t main_thread;  inline double clock() {    struct timezone tz_;    gettimeofday(&clock_, &tz_);    return (clock_.tv_sec+(double)clock_.tv_usec/1000000.0);  }  timeval clock_;};void *startthread(void *);class TimerHandler{ public:  TimerHandler();  virtual void expire(Event *) = 0;  // must be filled in by client  void resched(double);  void force_cancel();  void cancel_thread ();  void printlist();    Event *e;  double sched_time;  int sched_first;   // indicates whether timer has been scheded first time  int rescheded;  static   pthread_t tid;  int exited;  int outside;  /*  protected: */  static list < delta_list_entry*> delta_list;   static double time_started;   static double time_amount;  static set<pthread_t> tobeKilled;};class Handler{ public:};#endif

⌨️ 快捷键说明

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