может быть, для определения потока-эмиттера поможет QSignalMapper? Например, слот будет таким:
C++ (Qt)
void onNeedData(int threadIdent)
{
// use threadIdent to identify sender
}
а в конструкторе:
C++ (Qt)
signalMapper = new QSignalMapper(this);
for (int i = 0; i < threads_count; ++i) {
QMyThread *thread = new QMyThread(i);
connect(thread, SIGNAL(needData()), signalMapper, SLOT(map()));
signalMapper->setMapping(thread, i);
}
connect(signalMapper, SIGNAL(mapped(int)),
this, SIGNAL(onNeedData(int)));
C++ (Qt)
...
emit NeedData();
// zaprosili dannie, no kak uznat chto oni uzhe uspeli priyti?
...
может достаточно в открытой секции класса потока объявить флаг:
C++ (Qt)
volatile bool dataReady;
и дергать его из основного потока, а в потоке-эмиттере:
C++ (Qt)
dataReady = false;
emit NeedData();
while (!dataReady) sleep(timeout);