root/trunk/dep/src/zthread/Scheduling.h

Revision 2, 2.5 kB (checked in by yumileroy, 17 years ago)

[svn] * Proper SVN structure

Original author: Neo2003
Date: 2008-10-02 16:23:55-05:00

Line 
1/*
2 * Copyright (c) 2005, Eric Crahen
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is furnished
9 * to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in all
12 * copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 *
21 */
22
23#ifndef __ZTSCHEDULING_H__
24#define __ZTSCHEDULING_H__
25
26#include "ThreadImpl.h"
27
28#include <algorithm>
29#include <functional>
30#include <deque>
31#include <utility>
32
33namespace ZThread {
34
35  /**
36   * @author Eric Crahen <http://www.code-foo.com>
37   * @date <2003-07-16T20:01:18-0400>
38   * @version 2.2.0
39   * @class fifo_list
40   */
41  class fifo_list : public std::deque<ThreadImpl*> {
42  public:
43
44    void insert(const value_type& val) { push_back(val); }
45
46  };
47
48  /**
49   * @author Eric Crahen <http://www.code-foo.com>
50   * @date <2003-07-16T20:01:18-0400>
51   * @version 2.2.0
52   * @struct priority_order
53   */
54  struct priority_order : public std::binary_function<ThreadImpl*, ThreadImpl*, bool> {
55   
56    std::less<const ThreadImpl*> id;
57
58    bool operator()(const ThreadImpl* t0, const ThreadImpl* t1) const {
59
60      if(t0->getPriority() > t1->getPriority())
61        return true;
62
63      else if (t0->getPriority() < t1->getPriority())
64        return false;
65
66      return id(t0, t1);
67
68    }
69 
70  };
71
72
73  /**
74   * @author Eric Crahen <http://www.code-foo.com>
75   * @date <2003-07-16T20:01:18-0400>
76   * @version 2.2.0
77   * @class priority_list
78   */
79  class priority_list : public std::deque<ThreadImpl*> { 
80
81    priority_order comp;
82
83  public:
84
85    void insert(const value_type& val) { 
86
87      push_back(val); 
88      std::sort(begin(), end(), comp);
89
90    }
91
92  };
93
94} // namespace ZThread
95
96#endif // __ZTSCHEDULING_H__
Note: See TracBrowser for help on using the browser.