Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Суть задачи в следующем: Есть поток, который получает данные, раз в 100 мс примерно. Есть воторой поток, который отображает данные в графическом виде. Как сделать так, чтобы при получении данных первым потоком, он давал команду второму потоку отобразить их? Я побывал так: поток, отображающий данные работает в бесконечном цикле, на каждом шаге цикла проверяет, пришли ли новые данные от потока получения или нет. Но, это не рационально..цикл требует ресурсов. Как лучше сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 10:11 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Medvedev_AКак лучше сделать? Ты бы хоть ОС назвал... В Windows, например "отображающий поток" это обычно главный поток, который поддерживает GUI и крутит цикл выборки сообщений. Следовательно наиболее естественный способ его уведомления - посылка сообщения через SendMessage или PostMessage. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 11:49 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Да, windows, спасибо попробую так, как вы указали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 12:23 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Medvedev_A, Эээ... Как бы указанный способ далеко не самый лучший. 0) ни в коем случае нельзя использовать SendMessage. SendMessageTimeout или аналоги, или postMessage. 1) обновлений может прийти несколько, но видимо показывать есть смысл только одно, последнее. Также обновление бессмысленно показывать, если в данный момент пользователь что-то делает — главный поток может либо вообще ничего не ответить, либо обновление вклинится посреди действий пользователя. Поэтому в идеале надо обновляться по таймеру или по idle. Читающий поток кладет нужные данные в "гнездо", и возводит флаг, что данные новые, главный поток в очередной раз выходит на iddle, проверяет флаг, и выполняет обновление. "гнездо" необходимо защищать. Ну и 100 миллисекунд — это очень часто. Это порядок времени кадровой развертки телевизора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 21:28 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
MasterZiv100 миллисекунд — это очень часто. Это порядок времени кадровой развертки телевизора. Бредишь. 100мс это 10fps. Кадровая у телевизора это 60fps. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 21:31 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovБредишь. 100мс это 10fps. Кадровая у телевизора это 60fps60/10 = 6 В порядок величины - да, уложился :) P.S. И как только винда успевает автоповтор клавиатуры и движения мыши обрабатывать ... Не иначе как секретные технологии хардкордных прогеров ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 21:46 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
В окне сделать таймер. По приходу сообщения от процесса - ставить флаг, что данные появились. В обработчике таймера пересовывать. Частоту таймера можно регулировать, например UI. Т.е. пользоваетль сам сможет выбрать, как часто ему обновлять данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 01:37 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovMasterZiv100 миллисекунд — это очень часто. Это порядок времени кадровой развертки телевизора. Бредишь. 100мс это 10fps. Кадровая у телевизора это 60fps. Я говорил "порядок". Не 60 FPS, а 25. Это стандартное телевизионное значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 02:03 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
MasterZivНе 60 FPS, а 25. Это стандартное телевизионное значение.У стандарта SECAM - 50 полукадров. 24 - только в кино. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 07:56 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovMasterZivНе 60 FPS, а 25. Это стандартное телевизионное значение.У стандарта SECAM - 50 полукадров. 24 - только в кино. Ну и чё? Это меняет что -то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 09:23 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
MasterZivНу и чё? Это меняет что -то?Конкретные цифры - да, порядок величин - нет, постулат "посылать сообщения десять раз в секунду - очень часто" - всё равно остаётся сомнительным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 10:16 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Не посылать сообщения, а обновлять информацию. Я ж говорю, тут скорость поступления информации сравнима с максимальной скоростью, с которой глаз что-то может воспринимать, а наверное ещё и мозг что-то успевать сделать должен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 10:43 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
MasterZivЯ ж говорю, тут скорость поступления информации сравнима с максимальной скоростью, с которой глаз что-то может воспринимать, а наверное ещё и мозг что-то успевать сделать должен. Бедный мозг неспособен воспринимать 10 кадров в секунду? Автор же не сказал что представляют его "данные" и как они отображаются. Может, данные это одно целое число, а отображается это в виде ползущей точки как на осциллографе. Ты способен воспринимать информацию с осциллографа?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:17 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
MasterZivа наверное ещё и мозг что-то успевать сделать должен. мозг - разный, 60 fps бывает недостаточно (не только в игрушках) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:45 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Н-да... Холивар однако. Про автора топика и вопрос уже забыли напрочь... Автору: читать http://msdn.microsoft.com/en-us/library/windows/desktop/ms682052(v=vs.85).aspx Бойцам: я бы вас понял, если бы обсуждали работу с таймером на микросекунды. А остальное все - бред и спор не о чём. Это не нагрузка даже на проц с тактовой в 20 мгц... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:29 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
а вообще, если я хочу из одного потока послать данные в другой...как это быстрее всего сделать? SendMessage? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 14:27 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Medvedev_Aкак это быстрее всего сделать? Если говорить о чистой скорости, то быстрее всего этого вообще не делать: обрабатывать их в том же потоке, где получены. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 14:30 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Medvedev_Aа вообще, если я хочу из одного потока послать данные в другой...как это быстрее всего сделать? SendMessage? Ссылка на общие данные. Контроль доступа - мьютекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 14:30 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
Medvedev_Aа вообще, если я хочу из одного потока послать данные в другой...как это быстрее всего сделать? SendMessage? Вообще-то потоки специально придуманы, чтобы этого никогда не нужно было делать. Память у потоков одна и та же, ничего никуда посылать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 17:44 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
zMedvedev_Aа вообще, если я хочу из одного потока послать данные в другой...как это быстрее всего сделать? SendMessage? Ссылка на общие данные. Контроль доступа - мьютекс. Между потоками лучше -- критическая секция. В windows. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 17:45 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
MasterZivzпропущено... Ссылка на общие данные. Контроль доступа - мьютекс. Между потоками лучше -- критическая секция. В windows. Критическая секция - вариант мьютекса, где по сути невозможно выполнение какого то кода одновременно несколькими потоками, напр. доступа к данным. В чем будет преимущество по сравнению с "классическим" вариантом мьютекса для данной задачи? Да и насчет того, что память у потоков одна и та же... В принципе - да, одни и те же мелкосхемы юзаются Но логически - это как напишешь. Потоки даже если это одни и те же методы одного и того же класса можно по разному организовать... Напр. никто не запрещает разместить данные непосредственно в самом методе (как один из примеров). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 18:00 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
авторМежду потоками лучше -- критическая секция. В windows. Критическая секция - вариант мьютекса, где по сути невозможно выполнение какого то кода одновременно несколькими потоками, напр. доступа к данным. СОГЛАСЕН. Но в мире Windows мьютекс -- это то, что созадют CreteMutex, а неокрепшие умы не все знают, что есть ещё критические секции, и они -- тоже мьютексы. авторВ чем будет преимущество по сравнению с "классическим" вариантом мьютекса для данной задачи? Быстрее. Вообще, если не нужно межпроцессное взаимодействие, то по умолчанию в WinXX надо использовать секции. авторДа и насчет того, что память у потоков одна и та же... В принципе - да, одни и те же мелкосхемы юзаются Но логически - это как напишешь. Потоки даже если это одни и те же методы одного и того же класса можно по разному организовать... Напр. никто не запрещает разместить данные непосредственно в самом методе (как один из примеров). Логически. У потоков. Память. Одна. Даже та, которая в методе одного потока, доступна (и слава Богу!) из другого потока. Поэтому я и пишу -- ПАМЯТЬ ОДНА. Потому что она одна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 19:10 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Я запустил 2 независимых потока одного и того же метода. Массив (например) выделен в САМОМ МЕТОДЕ (читай фунуции), нет описателя в "заголовке класса". И ? Посмотри карту heap... Но может и не стоило этого писать, типа вредно для неокрепших умов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 20:20 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
zMasterZiv, Я запустил 2 независимых потока одного и того же метода. Массив (например) выделен в САМОМ МЕТОДЕ (читай фунуции), нет описателя в "заголовке класса". И ? Ну и что "И", это такая же память, как и любая другая. Передай ссылку на нее в другой поток как-то — будет доступна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2013, 00:22 |
|
||
|
взаимодействие между потоками, сигнал из одного потока в другой
|
|||
|---|---|---|---|
|
#18+
z, Ты из недоступности переменной делаешь вывод о недоступности памяти. Это неверно. Память и переменные — разные вещи, к сожалению. Переменная размещается в памяти, и может быть не видна где-то ни непосредственно, ни опосредованно, через ссылки, но даже в этом случае память этой переменной видна и доступна всем потокам данного процесса. А если на эту память, на эту переменную передать другому потоку ссылку, то вот она и будет видна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2013, 00:32 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38327213&tid=2020097]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
88ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 309ms |
| total: | 505ms |

| 0 / 0 |
