crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в как удалять элемент в QStringList в многопоточной программе?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
eldar85 Дата 26.8.2010, 22:00
  большое спасибо за помощь) проблема оказалась тривиальной, не учел одну вещь, при запуске потоков в основном потоке в цикле передавал значения с каждым запуском потока и получается что одно и тоже значение передавалось пока не все потоки не запустятся)
BRE Дата 26.8.2010, 17:32
  Посмотри обсуждение: http://www.prog.org.ru/topic_14426_0.html
Алексей1153 Дата 26.8.2010, 17:22
  eldar85, пусть QStringList list будет статическим членом класса, а также ещё добавь статический мутекс-член класса (венее, лучше локер, а не мутекс). Сделай статическую же функцию в классе, которая принимает параметры-флаги о действии (добавить, удалить, ...) а в начале этой функции защёлкивай локер. Будет красиво :)
eldar85 Дата 26.8.2010, 17:17
  Проблема такая, каждый поток должен получать разные значения из QStringList list;
void Thread::run()
{
    
    end = list.length();

    while(end != 0)
    {
        QString str = list[0];

        emit showT(QString::number(end).append("  ").append(str));

       list.removeAt(0);
        end = list.length();
        Sleep(100);
    }

}

QStringList list пренадлежит классу Thread и хотелось бы чтобы к примеру в list было 105 элементов и при запущенных 10 потоках каждый поток брал один элемент себе, сразу удаляя его из list чтобы остальные потоки не могли из него взять это значение. Как только он обработал это значение берет следующее которое ему достанется, а если не осталось то завершает работу и так все потоки.
но у меня получается что каждый поток берет к себе одно и тоже значение и только потом это значение удаляется...
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 16:40