LINUX.ORG.RU

Не взлетит... Поздно, уже скомпилялось

 


0

2
	Queue::Queue(const Properties& props)
	:	queue_(props.getInteger("Queue.Size"))
	,	worker_(queue_, [ this, &props ]() -> ThreadPoolT::Config 
	
		{ //lambda returns config begin

			ThreadPoolT::Config c = { //config begin
				props.getInteger("Queue.Workers"),
			[ this, &props ](){ //thread task lambda
				boost::this_thread::interruption_point();

				LogCategory* log = Log::instance()->createCategory("Server.Queue");
				try
				{
				DB db;
				db.init("DBWriter", props, log); 

				boost::posix_time::milliseconds delay(props.getInteger("Queue.WriteDelay"));

				while (true)
				{
					boost::this_thread::interruption_point();
					Message* msg;

					while (queue_.dequeue(msg))
					{
							assert(msg && "Queue data seems like inconsistent");
							{
								if (msg->type() == MessageID::E)
								{
									Parser::EMessage& er = *(Parser::EMessage*)msg;

									db.callPreparedStoredProc("CALL p_LoadERepo(?,?,NOW(), ?,?,?,?,?,?,?,?)", 
										er , [ this ] (sql::PreparedStatement& stmt, const Parser::EMessage& er) {
											stmt.setUInt	(1,		er.getExecID());
...
											stmt.setUInt	(11,	t.getSellerIsPrinted());
									});

								}
							}
					}
					LDebug(*log) << "queue is empty, wait for delay";
					boost::this_thread::sleep(delay);
					boost::this_thread::interruption_point();
				}
				}
				catch (const std::exception& e)
				{
					LError(*log) << std::string("Queue initialization error: ").append(e.what());
				}

	},
		[] (boost::thread& t) { //lambda that stopping thread
			t.interrupt();
			t.join();
		}
	}; //config ends here
	return c; }() //call embracing lambda (//lambda returns config end)
	)
{}

========== Build: 2 succeeded, 0 failed, 4 up-to-date, 0 skipped ==========

Два вопроса: «как?» И на*... «почему?»

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от Gvidon

Назови язык, при использовании которого, неопытный раздолбай не сможет выстрелить себе в ногу.

Brainfuck

чтобы на нём ещё и что-нибудь полезное можно было сделать

Он тьюринг-полный

Xenius ★★★★★
()
Ответ на: комментарий от wota

это лучшее, что можно и нужно тянуть в зависимостях, вместо всяких бустов

Так чем это лучше буста? Пока что против буста - только невразумительные ошибки при компиляции.

tailgunner ★★★★★
()
Ответ на: комментарий от Gvidon

Буст максимально разбит на независимые блоки и практически полностью несовместим с предыдущими версиями, да.

//фикседъ

nanoolinux ★★★★
()
Ответ на: комментарий от tailgunner

Так чем это лучше буста?

типовые задачи, вроде «получить список *.txt файлов», «перекодировать UTF-8->UTF-16», «кодировать в base64», «записать число в конфиг» и т.п., на Qt решаются проще и читабельнее (по факту в одну строку), а во-вторых Qt просто больше всего умеет

wota ★★
()
Последнее исправление: wota (всего исправлений: 1)
Ответ на: комментарий от Anon

жир не влезает в окно, и в код добавилась горизонтальная прокрутка!!!

Смени твой 15`` CRT на что-нить пошире, и LCD.

one_more_hokum ★★★
()

Теперь, посоны, прикиньте, что лямбду можно собрать в рантайме, опираясь на прилетевшие в функцию параметры, и прибиндить это безобразие к символу ... Потом останется подчистить синтаксис и проверить реализацию конпелятора на соответствие хотя бы CLtL2.

mv ★★★★★
()
Последнее исправление: mv (всего исправлений: 1)
Ответ на: комментарий от mv

Или запилить рекурсивую лямбду, через комбинаторы. Ловсанчик описаеться.

nanoolinux ★★★★
()

У кого то из великих читал, что количество уровней вложенности кода не должно превышать 5 ступеней. Не помню у кого.

saibogo ★★★★
()
Ответ на: комментарий от Chaser_Andrey

и да, отбивают отступы табами пробелами только муд^W ССЗБ. Поставьте таб и настройте ваш редактор — и оно будет выглядеть намного лучше.

*fixed

Kadi
()
Ответ на: комментарий от saibogo

Это эмпирическое правило с колебающимся параметром, называется «чувство меры». Если количество методов в классе превышает - разбивай, если функция не лезет в экран - разбивай... Правильно выполненный процесс («до») называется декомпозиция, но ее многие делают «после» - и обзывают модно «рефакторингом» (ТМ).

slackwarrior ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.