Вверх ↑
Ответов: 704
Рейтинг: 7
#1: 2011-10-11 01:43:20 ЛС | профиль | цитата
А если ситуевина такая: один такой поток выдает события на проигрывание синхронизированного массива звуков, второй - строковую несложную задачу, третий аналогичное. И все они с интервалом в 15. То получается все они начинают через 15 миллисекунд одновременно терзать процессор, отнимая все на себя? Если запустить каждый поток с одним интервалом итераций, но в разное время по таймеру (например один через 100 миллисекнуд, другой через 150, третий через 200) - получится решить проблему?

Раз со стеком работаю разные потоки (на запись и на чтение разные), то на запись SafeMode =Wait, а на чтение SafeMode =NoWait - верно?

И о том, что Thread не даст начаться новой, пока не завершился старая - он же будет копить все эти итерации пока не обработает, и создавать этим огромную очередь? Я разве не решаю эту проблему использованием того If_else? Мне просто хотелось чтоб стек читался как можно чаще, и в новом потоке, не задерживая основную задачу - вот и поставил 15 миллисекунд, но с выключателем через If_else: вышли данные из стека - включилась отсечка на новые итерации потока. Завершился поток - снова разрешается читать стек.

Вообще чего связался с этими потоками: основная задача - читать и писать в com-порт. Но большинство принимаемых данных не представляют ценности, а бывает, что приходят нужные данные. Но их обработка не является сверхсрочной и можно продолжать читать порт дальше.
Так вот данные заходят в стек и порт читается дальше себе. А новый поток опрашивает стек и обрабатывает очередь, записывая результат в память. Таким образом поддерживается нужная скорость опроса порта, и обработка данных идет в фоновом режиме (по крайней мере так планирую )
карма: 0

0