//---------------------------------------------------------
int main()
{
	{
		boost::asio::io_service		io_service;

		io_service.post(boost::bind(check_thread_id_00, boost::this_thread::get_id()));
		io_service.poll_one();
	}
	{
		boost::thread t_00(thread_01);
		t_00.join();
		global_io_service.run();
	}
	/*{
		boost::thread_group		thread_group;

		for(int i=0; i<2; ++i)
			thread_group.create_thread(thread_00);
		thread_group.join_all();
	}*/
	{
		boost::asio::io_service		io_service;
		boost::thread_group		thread_group;
	
		for(int i=0; i<5; ++i)
			thread_group.create_thread(
				boost::bind(run_01, boost::ref(io_service), boost::this_thread::get_id()));
		thread_group.join_all();
	}
	{
		//timer.async_wait(boost::bind(check_thread_id_00, boost::this_thread::get_id()));
	}
	return 0;
}
Exemple #2
0
std::vector<std::shared_ptr<Mesh>> Mesh::createCube()
{
	auto m = std::shared_ptr<Mesh>(new Mesh());

	glm::vec3 norm_z_p(0.f, 0.f, 1.f);
	glm::vec3 norm_z_m(0.f, 0.f, -1.f);
	glm::vec3 norm_x_p(1.f, 0.f, 0.f);
	glm::vec3 norm_x_m(-1.f, 0.f, 0.f);
	glm::vec3 norm_y_p(0.f, 1.f, 0.f);
	glm::vec3 norm_y_m(0.f, -1.f, 0.f);

	glm::vec3 v_ppp(1.f, 1.f, 1.f);
	glm::vec3 v_ppm(1.f, 1.f, -1.f);
	glm::vec3 v_pmp(1.f, -1.f, 1.f);
	glm::vec3 v_pmm(1.f, -1.f, -1.f);
	glm::vec3 v_mpp(-1.f, 1.f, 1.f);
	glm::vec3 v_mpm(-1.f, 1.f, -1.f);
	glm::vec3 v_mmp(-1.f, -1.f, 1.f);
	glm::vec3 v_mmm(-1.f, -1.f, -1.f);

	glm::vec2 t_00(0.f, 0.f);
	glm::vec2 t_01(0.f, 1.f);
	glm::vec2 t_10(1.f, 0.f);
	glm::vec2 t_11(1.f, 1.f);

	// Front
	m->vertices.push_back({ v_mmp, norm_z_p, t_00 });
	m->vertices.push_back({ v_pmp, norm_z_p, t_10 });
	m->vertices.push_back({ v_ppp, norm_z_p, t_11 });

	m->vertices.push_back({ v_ppp, norm_z_p, t_11 });
	m->vertices.push_back({ v_mpp, norm_z_p, t_01 });
	m->vertices.push_back({ v_mmp, norm_z_p, t_00 });

	// Back
	m->vertices.push_back({ v_mmm, norm_z_m, t_00 });
	m->vertices.push_back({ v_ppm, norm_z_m, t_11 });
	m->vertices.push_back({ v_pmm, norm_z_m, t_10 });

	m->vertices.push_back({ v_ppm, norm_z_m, t_11 });
	m->vertices.push_back({ v_mmm, norm_z_m, t_00 });
	m->vertices.push_back({ v_mpm, norm_z_m, t_01 });

	// Left
	m->vertices.push_back({ v_mpp, norm_x_m, t_10 });
	m->vertices.push_back({ v_mpm, norm_x_m, t_11 });
	m->vertices.push_back({ v_mmm, norm_x_m, t_01 });

	m->vertices.push_back({ v_mmm, norm_x_m, t_01 });
	m->vertices.push_back({ v_mmp, norm_x_m, t_00 });
	m->vertices.push_back({ v_mpp, norm_x_m, t_10 });

	// Right
	m->vertices.push_back({ v_ppp, norm_x_p, t_10 });
	m->vertices.push_back({ v_pmm, norm_x_p, t_01 });
	m->vertices.push_back({ v_ppm, norm_x_p, t_11 });

	m->vertices.push_back({ v_pmm, norm_x_p, t_01 });
	m->vertices.push_back({ v_ppp, norm_x_p, t_10 });
	m->vertices.push_back({ v_pmp, norm_x_p, t_00 });

	// Top
	m->vertices.push_back({ v_mpm, norm_y_p, t_01 });
	m->vertices.push_back({ v_ppp, norm_y_p, t_10 });
	m->vertices.push_back({ v_ppm, norm_y_p, t_11 });

	m->vertices.push_back({ v_ppp, norm_y_p, t_10 });
	m->vertices.push_back({ v_mpm, norm_y_p, t_01 });
	m->vertices.push_back({ v_mpp, norm_y_p, t_00 });

	// Bottom
	m->vertices.push_back({ v_mmm, norm_y_m, t_01 });
	m->vertices.push_back({ v_pmm, norm_y_m, t_11 });
	m->vertices.push_back({ v_pmp, norm_y_m, t_10 });

	m->vertices.push_back({ v_pmp, norm_y_m, t_10 });
	m->vertices.push_back({ v_mmp, norm_y_m, t_00 });
	m->vertices.push_back({ v_mmm, norm_y_m, t_01 });

	for (size_t i = 0; i < m->vertices.size(); ++i)
	{
		m->indices.push_back(i);
	}

	m->setupArrays();

	return { m };
}