Russian Qt Forum
Ноябрь 24, 2024, 19:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите разобраться с QThread'ами (windows VS linux)  (Прочитано 4606 раз)
nik135
Гость
« : Май 16, 2008, 10:16 »

Есть код, который работает по-разному на windows и linux.
Это пример из книжки, немного доработанный мною(всунут QMutex)
один поток выводит на консоль "B", второй "A".
В Windows Выводится "BABABABABABABABABABABABABABABABABAB" и т.д.
В Linux работает так: "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
                                AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

Как добиться такого же вывода, как в Windows?

Архив с исходниками прилагаю, проверьте как у вас?
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Май 16, 2008, 12:39 »

Есть код, который работает по-разному на windows и linux.
Это пример из книжки, немного доработанный мною(всунут QMutex)
один поток выводит на консоль "B", второй "A".
В Windows Выводится "BABABABABABABABABABABABABABABABABAB" и т.д.
В Linux работает так: "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
                                AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

Как добиться такого же вывода, как в Windows?

Архив с исходниками прилагаю, проверьте как у вас?

Проверь сначала как работает недоработанный тобой пример.
Записан
nik135
Гость
« Ответ #2 : Май 16, 2008, 13:21 »

Проверь сначала как работает недоработанный тобой пример.

Абсолютно точно так же. Если выкинете мутекс, получится исходный код примера.
Записан
Alex03
Гость
« Ответ #3 : Май 19, 2008, 07:21 »

Комп один или разные под винду/линукс?
Если один то ядро в линуксе грузится SMP-ёвое?
Т.е. есть подозрение что в линуксе всё вертится на одном проце, а в винде на нескольких.
Ну и как второй вариант (если всё вертится на одном ядре проца) - разное поведение ОС-ей по  части шедулинга при QThread::TimeCriticalPriority и операциях ввода/вывода.
Записан
nik135
Гость
« Ответ #4 : Май 19, 2008, 08:58 »

Комп один или разные под винду/линукс?
Если один то ядро в линуксе грузится SMP-ёвое?
Т.е. есть подозрение что в линуксе всё вертится на одном проце, а в винде на нескольких.
Ну и как второй вариант (если всё вертится на одном ядре проца) - разное поведение ОС-ей по  части шедулинга при QThread::TimeCriticalPriority и операциях ввода/вывода.


Проверялось как на одном компе, так и на разных. Проверялось на smp и не smp ядрах (2.4 и 2.6), а также при разных приоритетах потоков. Я склоняюсь к тому, что это действительно шедулер так работает(имхо криво, так как время выделяемое на каждую нить непостоянно, некоторые нитки вообще могут "замереть", а потом "отвиснуть"). Как побороть линуховый шедулер, если это действительно он? Никому такое поведение не мешает при разработке приложений?

зы. народ, очень нада, неужели никто не сталкивался?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.