C++, Позволяющий повышению распараллеливать, ожидает в течение 1 секунды

select distinct - это оператор, который гарантирует, что в результирующем наборе нет повторяющихся строк . То есть он отфильтровывает строки, в которых каждый столбец одинаков (а значения NULL считаются равными).

Он не смотрит на подмножество столбцов.

Иногда люди используют select distinct и не понимают, что это относится ко всем столбцам. Довольно забавно, когда первый столбец в круглых скобках - как будто круглые скобки имеют значение (они этого не делают).

Тогда у вас могут возникнуть ситуации, когда значения выглядят одинаково, но это не так.

Рассмотрим этот простой пример, где значения отличаются только пробелом в качестве конца строки:

select distinct x
from (select 'a' as x union all
      select 'a '
     ) y;

Здесь - это скрипта db <> с этим примером.

Это возвращает две строки, а не 1.

Без примеров данных трудно сказать, на какую из этих ситуаций вы ссылаетесь. Но строки, которые вы считаете «идентичными», на самом деле не совпадают.

8
задан schnaader 22 April 2009 в 03:59
поделиться

3 ответа

Есть ли более простой способ

Может быть что-то вроде этого:

boost::this_thread::sleep(boost::posix_time::seconds(1));

boost::thread::sleep(boost::posix_time::seconds(1));

26
ответ дан 3 November 2019 в 14:03
поделиться

boost :: xtime_get () выглядит как один из немногих API-интерфейсов Boost, который не реализован в заголовке, поэтому это может быть что-то вроде неправильной компиляции библиотеки Boost. Это, вероятно, похоже на несовпадение соглашений о вызовах или что-то в этом роде. Я не знаю, в первую очередь, какие шаги вам могут понадобиться, чтобы перестроить библиотеку - все, что я когда-либо использовал в Boost, это вещи, которые требуют только заголовки.

Это может быть полезно, если вы просто проследите в процедуру xtime_get () , даже если она находится на уровне сборки. Структура xtime очень, очень проста, и xtime_get () на самом деле ничего не делает, кроме как вызывает специфичный для платформы API, чтобы получить числа для подключения к xtime структура.

2
ответ дан 3 November 2019 в 14:03
поделиться

С этим кодом (не зная, например, где вы его поместили), все, что я могу сказать, это то, что xtime_get Метод возвращает тип возвращаемой меры. То есть, вы должны быть уверены, например, в том, что справедливо следующее утверждение:

int res = boost::xtime_get(&xt, boost::TIME_UTC);
assert(res == boost::TIME_UTC);

Может случиться, что в вашей системе это не так.

Однако, посмотрев на код еще раз, мне приходит в голову, что сбой может быть связан не с этим вызовом, а с другими вещами, которые вы делаете в своем приложении. Опять же, это зависит от того, где вы используете этот код. Это внутри оператора () вашего потока?

0
ответ дан 3 November 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: