|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.03.2017, 10:42 | #21 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
чем больше объектов слежки, тем больше накладные расходы. в т.ч. и времени на эту слежку.
и тем больше вероятность уйти в клинч. когда первый ждет второго. второй ждет третьего. а третий ждет ПЕРВОГО. итого все ждут и НИКТО не дождется. именно поэтому и делают поэтому главного арбитра, который следил бы за всеми и командовал бы ими. Это как правило проще, чем отлавливать коллизии. Цитата:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 02.03.2017 в 10:44. |
|
02.03.2017, 11:15 | #22 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Так мне и не нужна такая цепочка; мне нужно что бы все ждали всех, независимо от их порядка расположения. Поэтому я и выдвинул метод счётчика. Но мой метод оказался неэффективным, поэтому я ищу другой вариант решения именно этой задачи.
Думал, что дело в том, что происходит одновременный инкремент счётчика, из-за чего в переменную не успевают "запихнуться" все потоки; попробовал использовать lock - безрезультатно. Надо вспоминать семафоры.
Подпись ? Не, не слышал ...
|
02.03.2017, 11:21 | #23 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
не надо ничего вспоминать...это все там нафиг не сдалось.
если уж так хочется привязать поток к UI, то передаете компоненты к которым привязан поток, и далее InvokeRequired=>Invoke. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
02.03.2017, 11:30 | #24 | |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Цитата:
Мне хочется синхронизировать потоки, таким образом, что бы код Invoke() выполнялся одновременно.
Подпись ? Не, не слышал ...
|
|
02.03.2017, 12:08 | #25 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а смысл тормозить все и вся?
тогда данные для вывода пусть поток кладет в переменную, а форма по таймеру забирает. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
02.03.2017, 12:20 | #26 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Это обсуждалось первые две страницы. Проблему это не решит - вывод всё равно будет "беспорядочным", каждый поток выводит тогда, когда получится. И внешне это выглядит не особо ... При этом не важно, куда поток выводит данные, прямо в лейбу, или в переменную. Если в переменную - форма забирает данные тогда, когда появились эти данные. Это и есть асинхрон. Делать так, что бы форма ждала данные ото всех потоков (синхронизация всех потоков со всеми потоками и с формой) - нехорошо.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 02.03.2017 в 12:24. |
02.03.2017, 12:25 | #27 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Потокам не надо ничего выводить кроме времени завершения "таймаута".
Сколько осталось времени считать в таймере на форме.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
02.03.2017, 12:39 | #28 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Это тогда нужно, что бы форма отслеживала какие задачи находятся в режиме ожидания (отсчёт времени), а какие задачи выполняются. А это ещё сложнее, чем просто вывести значение переменной.
Подпись ? Не, не слышал ...
|
02.03.2017, 12:40 | #29 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Форма забирает данные(конечно при условии наличия таковых) тогда когда сочтет нужным. в частности возможно в тот момент когда ВСЕ потоки сложили их. после этого она имеет право(если такое нужно) очистить их, поуправлять немножко потоками, да мало ли что она может. А потоки вовсе не обязаны дожидаться форму. Если они только и делают что ждут форму, то проще все таймеры из потоков сложить на форму и вперед. Будет тот же самый эффект. Задача потоков ДЕЛАТЬ что-то НЕЗАВИСИМО от других.
программа — запись алгоритма на языке понятном транслятору
|
|
02.03.2017, 12:49 | #30 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а есть ли проблема?
данные, если уж нужно выводить, имеет смысл выводить как только они появились, смысл их ждать, тормозить всех и тп? синхронизация это наоборот, не сообща, а по очереди. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Синхронизация потоков | _ZixeL_ | Общие вопросы Delphi | 14 | 10.09.2015 22:23 |
Синхронизация потоков | Fireblade-fan | Общие вопросы Delphi | 5 | 17.12.2012 01:57 |
Синхронизация потоков | _Bers | Общие вопросы C/C++ | 5 | 23.12.2011 22:57 |
синхронизация потоков | m_kostik | Win Api | 0 | 26.03.2010 23:56 |