TriKrista: Вообщем не подошло мне это всё извращение, поэтому написал все в QThread и циклом проходя на каждом процессоре свою порцию данных, но я не заметил увеличения ускорения , скорее даже наоборот. Подозреваю что всё дело в том что каждое ядро в цикле обходит список, и каждый новый элемент ищет по очереди, ведь объекты QList
ParsingFile::ParsingFile(QList<QString> &list_string, int num_core, QObject *parent): QThread(parent)
{
this->row = &list_string;
this->number_core = num_core;
//qDebug() << "start core: " << number_core << endl;
}
void ParsingFile::run()
{
int maxThread = QThread::idealThreadCount();
for(int p=this->number_core; p < this->row->count(); p=p+maxThread)
{
QString tmp = row->at(p);
DATA_Channel T;
QString arg= "";
bool quote = false;
int num_arg = 0;
for(int i=0; i<tmp.length(); i++)
{
******
}
this->channel.push_back(T);
}
emit result_parse(this->channel);
}
Создание потоков происходит в таком виде
int core = QThread::idealThreadCount();
for(int i=0; i<core; i++)
{
this->threads.push_back( new ParsingFile(row_lst,i) );
this->threads[i]->start(QThread::HighestPriority);
}