32 lines
689 B
C++
32 lines
689 B
C++
|
#include "ffi.h"
|
||
|
|
||
|
namespace FFI {
|
||
|
|
||
|
ThreadedCallbackInvokation::ThreadedCallbackInvokation(callback_info* cbinfo, void* retval, void** parameters) {
|
||
|
m_cbinfo = cbinfo;
|
||
|
m_retval = retval;
|
||
|
m_parameters = parameters;
|
||
|
|
||
|
uv_mutex_init(&m_mutex);
|
||
|
uv_mutex_lock(&m_mutex);
|
||
|
uv_cond_init(&m_cond);
|
||
|
}
|
||
|
|
||
|
ThreadedCallbackInvokation::~ThreadedCallbackInvokation() {
|
||
|
uv_mutex_unlock(&m_mutex);
|
||
|
uv_cond_destroy(&m_cond);
|
||
|
uv_mutex_destroy(&m_mutex);
|
||
|
}
|
||
|
|
||
|
void ThreadedCallbackInvokation::SignalDoneExecuting() {
|
||
|
uv_mutex_lock(&m_mutex);
|
||
|
uv_cond_signal(&m_cond);
|
||
|
uv_mutex_unlock(&m_mutex);
|
||
|
}
|
||
|
|
||
|
void ThreadedCallbackInvokation::WaitForExecution() {
|
||
|
uv_cond_wait(&m_cond, &m_mutex);
|
||
|
}
|
||
|
|
||
|
}
|