File tree Expand file tree Collapse file tree 1 file changed +7
-3
lines changed Expand file tree Collapse file tree 1 file changed +7
-3
lines changed Original file line number Diff line number Diff line change 42
42
# pylint: disable=invalid-name
43
43
44
44
import heapq
45
- import time
46
45
import logging
47
46
import socket
47
+ import threading
48
48
import multiprocessing
49
49
import errno
50
50
import struct
@@ -112,10 +112,12 @@ def summary(self):
112
112
113
113
114
114
class PriorityScheduler (Scheduler ):
115
- """Priority based scheduler, FIFO based on time """
115
+ """Priority based scheduler, FIFO based on request order """
116
116
117
117
def __init__ (self , key ):
118
118
self ._key = key
119
+ self ._request_cnt = 0
120
+ self ._lock = threading .Lock ()
119
121
self ._values = []
120
122
self ._requests = []
121
123
@@ -134,7 +136,9 @@ def put(self, value):
134
136
self ._schedule ()
135
137
136
138
def request (self , user , priority , callback ):
137
- heapq .heappush (self ._requests , (- priority , time .time (), callback ))
139
+ with self ._lock :
140
+ heapq .heappush (self ._requests , (- priority , self ._request_cnt , callback ))
141
+ self ._request_cnt += 1
138
142
self ._schedule ()
139
143
140
144
def remove (self , value ):
You can’t perform that action at this time.
0 commit comments