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();
}
Beispiel #3
0
		// 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;