C++11の非同期呼び出し

804 ワード

C++11のスレッドライブラリで非同期呼び出しを完了するのは便利で、標準ライブラリは非常にきれいなインタフェースを提供しています.次は良い例です.
template
struct async_call;

template
struct async_call
{
	template
	async_call(F&& f, Args... args)
	{
		std::packaged_task task(f);
		m_future=task.get_future();
		std::thread(std::move(task), args...).detach();
	}
	
	R get()
	{
		return m_future.get();
	}

private:
	std::future m_future;
};

このテンプレートクラスは、標準ライブラリを簡単にパッケージして呼び出します.
	int a=10, b=20;
	//            
	async_call ac([](int x){ return x*x; }, a);
	//       
	b*=b;
	//      ,   
	cout<

このように基本的にスレッドのプログラミングの細部に関心を持つ必要はありません.プログラミングの感じもスクリプトと似ています.ハハ.