Пример #1
0
	bool io_thread::pump_messages()
	{
		bool didWork = false;
		while (have_messages())
		{
			if (halted())
				return didWork;
			if (have_message_queue())
			{
				message_queue().get_message();
				message_queue().idle();
			}
			didWork = true;
		}
		return didWork;
	}
Пример #2
0
	bool io_thread::do_io(bool aYieldIfNoWork)
	{
		if (iHalted)
			return false;
		bool didSome = false;
		didSome = (iTimerIoService.do_io(false) || didSome);
		didSome = (iNetworkingIoService.do_io(false) || didSome);
		didSome = (process_events() || didSome);
		if (!didSome && aYieldIfNoWork)
		{
			if (have_message_queue())
				message_queue().idle();
			sleep(1);
		}
		return didSome;
	}
Пример #3
0
	bool io_thread::have_messages() const
	{
		return have_message_queue() && message_queue().have_message();
	}