mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 16:12:01 +00:00
dbms: development [#CONV-2944].
This commit is contained in:
parent
71a594fd6d
commit
b907de191b
@ -56,6 +56,18 @@ public:
|
||||
}
|
||||
empty_count.set();
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
while (fill_count.tryWait(0))
|
||||
{
|
||||
{
|
||||
Poco::ScopedLock<Poco::Mutex> lock(mutex);
|
||||
queue.pop();
|
||||
}
|
||||
empty_count.set();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -103,8 +115,13 @@ public:
|
||||
finish = true;
|
||||
cancel();
|
||||
|
||||
// TODO: может быть, здесь может возникнуть блокировка, если очередь переполнена, и какой-нибудь из потоков попытается положить в неё блок.
|
||||
|
||||
/// Вынем всё, что есть в очереди готовых данных.
|
||||
output_queue.clear();
|
||||
|
||||
/** В этот момент, запоздавшие потоки ещё могут вставить в очередь какие-нибудь блоки, но очередь не переполнится.
|
||||
* PS. Может быть, для переменной finish нужен барьер?
|
||||
*/
|
||||
|
||||
for (ThreadsData::iterator it = threads_data.begin(); it != threads_data.end(); ++it)
|
||||
it->thread->join();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user