mirror of
https://github.com/data61/MP-SPDZ.git
synced 2026-01-11 14:37:56 -05:00
41 lines
612 B
C++
41 lines
612 B
C++
/*
|
|
* ThreadQueue.cpp
|
|
*
|
|
*/
|
|
|
|
|
|
#include "ThreadQueue.h"
|
|
|
|
void ThreadQueue::schedule(const ThreadJob& job)
|
|
{
|
|
lock.lock();
|
|
left++;
|
|
#ifdef DEBUG_THREAD_QUEUE
|
|
cerr << this << ": " << left << " left" << endl;
|
|
#endif
|
|
lock.unlock();
|
|
in.push(job);
|
|
}
|
|
|
|
ThreadJob ThreadQueue::next()
|
|
{
|
|
return in.pop();
|
|
}
|
|
|
|
void ThreadQueue::finished(const ThreadJob& job)
|
|
{
|
|
out.push(job);
|
|
}
|
|
|
|
ThreadJob ThreadQueue::result()
|
|
{
|
|
auto res = out.pop();
|
|
lock.lock();
|
|
left--;
|
|
#ifdef DEBUG_THREAD_QUEUE
|
|
cerr << this << ": " << left << " left" << endl;
|
|
#endif
|
|
lock.unlock();
|
|
return res;
|
|
}
|