crossplatform.ru

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

> как удалять элемент в QStringList в многопоточной программе?
eldar85
  опции профиля:
сообщение 26.8.2010, 17:17
Сообщение #1


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема такая, каждый поток должен получать разные значения из 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 чтобы остальные потоки не могли из него взять это значение. Как только он обработал это значение берет следующее которое ему достанется, а если не осталось то завершает работу и так все потоки.
но у меня получается что каждый поток берет к себе одно и тоже значение и только потом это значение удаляется...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 26.8.2010, 17:22
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


eldar85, пусть QStringList list будет статическим членом класса, а также ещё добавь статический мутекс-член класса (венее, лучше локер, а не мутекс). Сделай статическую же функцию в классе, которая принимает параметры-флаги о действии (добавить, удалить, ...) а в начале этой функции защёлкивай локер. Будет красиво :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.1.2025, 20:38