Re[2]: проблема с pthread
От: naje  
Дата: 09.09.03 07:43
Оценка:
Здравствуйте, kiamor, Вы писали:

K>Здравствуйте, naje.


N>>Есть какие-то идеи?


K>Идеи есть поставь маленькую паузу в каждом

K>потоке (чувствую, они у тебя циклически работают ).
K>Посмотришь на результат. (Вместо паузы можно также
K>sched_yield вызвать).

А что значит циклически? Я заметил что они почему-то переключатся начинают как-то неправельно, т.б. слишком часто и в топе после того как всё отработалось этот процес ещё долго висит, я так понимаю это шедулер продолжает что-то делать. Один запрос выполняется в юзерспейсе где-то сотую секунды, полностью запрос с учётом запросов к базе где-то 3 десятые секунды, с учётом того что в юзерспейсе процесс выполняется мало получается что если запустить 10 потоков то 10 запросов будет выполнятся тоже приблизительно 3 десятые секунды, и это на практике работает, и для 20 и 30 потоков, т.б. 30 запросов за 3 десятые секунды, но потом что-то происходит, и какая-то след. пачка, выполняется медленнее чем если бы всё это обслуживал один поток (на один запрос бывает до секунды на 10 до 10 секунд), единственная синхронизация между потоками это pthread_cond.. с мьютексом, для обработки очереди запросов, больше не нужно. Если ставить sched_yield, то где? Там где ставятся задания в очередь или там где забираются?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.