void V8SynchronizationContext::Initialize() { // This executes on V8 thread V8SynchronizationContext::uv_edge_async = new uv_edge_async_t; uv_async_init(uv_default_loop(), &V8SynchronizationContext::uv_edge_async->uv_async, continueOnV8Thread); V8SynchronizationContext::Unref(V8SynchronizationContext::uv_edge_async); V8SynchronizationContext::funcWaitHandle = gcnew AutoResetEvent(true); }
void V8SynchronizationContext::Initialize() { // This executes on V8 thread DBG("V8SynchronizationContext::Initialize"); V8SynchronizationContext::uv_edge_async = new uv_edge_async_t; uv_edge_async->singleton = TRUE; uv_async_init(uv_default_loop(), &V8SynchronizationContext::uv_edge_async->uv_async, continueOnV8Thread); V8SynchronizationContext::Unref(V8SynchronizationContext::uv_edge_async); V8SynchronizationContext::funcWaitHandle = gcnew AutoResetEvent(true); V8SynchronizationContext::v8ThreadId = GetCurrentThreadId(); }
// Calculate increments for motion calc_motion_intervals(); // Start thread bw_motion->RunWorkerAsync(); } // ================================================================ // motion_DoWork: // Every 20 ms update angles until motion complete // ================================================================ void Form1::motion_DoWork(System::Object^ sender, DoWorkEventArgs^ e) { // Make a new thread for timer TimerCallback^ tcb_1 = gcnew TimerCallback(this, &GUI_1::Form1::tmr_Tick); AutoResetEvent^ autoEvent = gcnew AutoResetEvent(false); tmr_1 = gcnew System::Threading::Timer(tcb_1, 0, 1000, 1000); while (1) { int flag_counter = 0; if (FLAG_NEW_VALUES) { for (int i = 0; i < 9; i++) { if (flags_new_value[i]) { if (angles_to_AVR[i] == final_values[i]) // If desired and current angles equal { increments[i] = 0; flags_new_value[i] = 0;