コード例 #1
0
int main()
{
	std::mutex MX;
	std::condition_variable CV;

	auto F1 = [&] {
		std::cout << "Start F1" << std::endl;

		try
		{
			std::unique_lock<std::mutex> UL(MX);
			while (true)
			{
				interruptible_wait(CV, UL);
			}
		}
		catch (thread_interrupted& e)
		{
			std::cout << e.what() << std::endl;
		}

		std::cout << "Endof F1" << std::endl;
	};

	interruptible_thread T1(F1);


	std::thread T2([&] {
		std::cout << "Start F2" << std::endl;
		std::this_thread::sleep_for(std::chrono::milliseconds(1000));

		T1.interrupt();

		//std::this_thread::sleep_for(std::chrono::milliseconds(10000));
		//T1.interrupt();
		std::cout << "Endof F2" << std::endl;
	});


	T1.join();
	T2.join();
	return 0;
}
コード例 #2
0
ファイル: thread_data.hpp プロジェクト: 4ukuta/core
 inline void sleep(system_time const& abs_time)
 {
     interruptible_wait(abs_time);
 }
コード例 #3
0
ファイル: thread_data.hpp プロジェクト: 4ukuta/core
 inline void sleep(TimeDuration const& rel_time)
 {
     interruptible_wait(detail::pin_to_zero(rel_time.total_milliseconds()));
 }
コード例 #4
0
ファイル: thread_data.hpp プロジェクト: 4ukuta/core
 inline void interruptible_wait(system_time const& abs_time)
 {
     interruptible_wait(detail::win32::invalid_handle_value,abs_time);
 }
コード例 #5
0
ファイル: thread_data.hpp プロジェクト: 4ukuta/core
 inline void interruptible_wait(uintmax_t milliseconds)
 {
     interruptible_wait(detail::win32::invalid_handle_value,milliseconds);
 }
コード例 #6
0
 inline void sleep(TimeDuration const& rel_time)
 {
     interruptible_wait(static_cast<unsigned long>(rel_time.total_milliseconds()));
 }
コード例 #7
0
 inline void interruptible_wait(unsigned long milliseconds)
 {
     interruptible_wait(detail::win32::invalid_handle_value,milliseconds);
 }