Как понять что программа работает в двух потоках? |
Здравствуйте, гость ( Вход | Регистрация )
Как понять что программа работает в двух потоках? |
RazrFalcon |
4.10.2010, 14:31
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Есть простой пример из хелпа
.срр
.h
.pro
а вот вывод такой: ... 406010 406011 406012 406013 406014 406015 ... а по идее должен быть типа ... 406010 406010 406011 406011 406012 406012 ... PS: как присвоить приоритет Так не хочет (из хелпа) вот так После применения приоритетов 713245 726544 713246 726545 713247 726546 выходит один спешит? не пойму совсем "к слову скрин загрузки" PSS: можно ли выбрать ядро для выполнения функции? Сообщение отредактировал RazrFalcon - 4.10.2010, 15:01 |
|
|
Алексей1153 |
12.10.2010, 6:18
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
RazrFalcon, ОС раздаёт всем потокам всех процессов кусочки времени (time slices), в винде, к примеру, это около 16 мс (если не вру). Так обеспечивается многозадачность ОС
Поток волен в это время вовсю работать (если только его ядро системы не прерывает для каких-то нужд). Они у тебя и работают - видимо, за этот слайс поток успевает вывести столько сообщений. Мне только осталось неясно, почему лог так быстро закончился А вот ежели отдавать часть слайса в систему методом msleep(0) , тогда всё будет вперемешку, по идее
Сообщение отредактировал Алексей1153 - 12.10.2010, 6:19 |
|
|
RazrFalcon |
12.10.2010, 14:38
Сообщение
#3
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Мне только осталось неясно, почему лог так быстро закончился Лог от последнего примера, там до 10 как раз и есть. они оба выдают "+two". внимательнее надо писать код Да уш, закрутился называется. Но суть в том что я не пойму как заставить разные функции выполнятся. Сейчас я создаю 2-а (3-и с основным) потока, которые делают одно и тоже. А мне надо чтоб один поток делал одно, а второй другое. Хотя в принципе можно также чтоб одно и тоже действие но с разными параметрами. И вопрос в том: если я создаю еще 2-а исполняющих потока - то основной (main) в простое просто. И как можно дать приоритет main'у. Я то только новым задаю приоритет потокам. К слову, он вообще сильно влияет. Я пока что особой разницы не заметел, хотя у мне я то и функция не ахти =). Что б было понятно что за ересь я написал выше, такой вот пример: Есть захват видео с камеры, грубо говоря покадрово. То есть я беру 1-й кадр - его в потока пусть обрабатывается, и пока он обрабатывается беру следующий, и его во второй поток. Потом первый обработался - вывели на экран, и первый берет уже 3-й кадр ну и тд. Главное чтоб они выводились во время а не как попало (1,2,3,4,5... а не 1,3,2,5,4 к примеру). Ну и соответственно сколько ядер, столько и обрабатывается кадров одновременно, это на будущие конечно. |
|
|
Текстовая версия | Сейчас: 14.1.2025, 21:19 |