| 59 | } |
| 60 | |
| 61 | int Dequeue(T* data, size_t amount){ |
| 62 | acquireLock(&dequeueLock); |
| 63 | if(dequeuePointer == enqueuePointer){ |
| 64 | releaseLock(&dequeueLock); |
| 65 | return 0; |
| 66 | } |
| 67 | |
| 68 | size_t counter = 0; |
| 69 | while(dequeuePointer != enqueuePointer && counter < amount) { |
| 70 | memcpy(data++, dequeuePointer++, sizeof(T)); |
| 71 | counter++; |
| 72 | |
| 73 | if(dequeuePointer >= bufferEnd){ |
| 74 | dequeuePointer = buffer; |
| 75 | } |
| 76 | } |
| 77 | releaseLock(&dequeueLock); |
| 78 | |
| 79 | return counter; |
| 80 | } |
| 81 | }; |