| 231 | { |
| 232 | } |
| 233 | ~TLockFreeQueue() { |
| 234 | AsyncRef(); |
| 235 | AsyncUnref(); // should free FreeList |
| 236 | EraseList(JobQueue.load(std::memory_order_relaxed)->PushQueue.load(std::memory_order_relaxed)); |
| 237 | EraseList(JobQueue.load(std::memory_order_relaxed)->PopQueue.load(std::memory_order_relaxed)); |
| 238 | delete JobQueue; |
| 239 | } |
| 240 | template <typename U> |
| 241 | void Enqueue(U&& data) { |
| 242 | TListNode* newNode = new TListNode(std::forward<U>(data)); |