Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2017, 10:42   #21
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

чем больше объектов слежки, тем больше накладные расходы. в т.ч. и времени на эту слежку.
и тем больше вероятность уйти в клинч.
когда первый ждет второго.
второй ждет третьего.
а третий ждет ПЕРВОГО.
итого все ждут и НИКТО не дождется.
именно поэтому и делают поэтому главного арбитра, который следил бы за всеми и командовал бы ими.
Это как правило проще, чем отлавливать коллизии.

Цитата:
в обычном режиме потоки не успевают друг за другом
и зачем в таком разе вообще нужны эти потоки.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.03.2017 в 10:44.
evg_m вне форума Ответить с цитированием
Старый 02.03.2017, 11:15   #22
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
когда первый ждет второго.
второй ждет третьего.
а третий ждет ПЕРВОГО.
Так мне и не нужна такая цепочка; мне нужно что бы все ждали всех, независимо от их порядка расположения. Поэтому я и выдвинул метод счётчика. Но мой метод оказался неэффективным, поэтому я ищу другой вариант решения именно этой задачи.
Думал, что дело в том, что происходит одновременный инкремент счётчика, из-за чего в переменную не успевают "запихнуться" все потоки; попробовал использовать lock - безрезультатно.
Надо вспоминать семафоры.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 02.03.2017, 11:21   #23
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не надо ничего вспоминать...это все там нафиг не сдалось.
если уж так хочется привязать поток к UI, то передаете компоненты к которым привязан поток, и далее InvokeRequired=>Invoke.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.03.2017, 11:30   #24
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
если уж так хочется привязать поток к UI, то передаете компоненты к которым привязан поток, и далее InvokeRequired=>Invoke
Эмм ... Вопчета я так и делаю (тут даже код передачи лейбов в потоки).
Мне хочется синхронизировать потоки, таким образом, что бы код Invoke() выполнялся одновременно.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 02.03.2017, 12:08   #25
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а смысл тормозить все и вся?

тогда данные для вывода пусть поток кладет в переменную, а форма по таймеру забирает.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.03.2017, 12:20   #26
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
тогда данные для вывода пусть поток кладет в переменную, а форма по таймеру забирает
Это обсуждалось первые две страницы. Проблему это не решит - вывод всё равно будет "беспорядочным", каждый поток выводит тогда, когда получится. И внешне это выглядит не особо ... При этом не важно, куда поток выводит данные, прямо в лейбу, или в переменную. Если в переменную - форма забирает данные тогда, когда появились эти данные. Это и есть асинхрон. Делать так, что бы форма ждала данные ото всех потоков (синхронизация всех потоков со всеми потоками и с формой) - нехорошо.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 02.03.2017 в 12:24.
OmegaBerkut вне форума Ответить с цитированием
Старый 02.03.2017, 12:25   #27
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Потокам не надо ничего выводить кроме времени завершения "таймаута".
Сколько осталось времени считать в таймере на форме.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.03.2017, 12:39   #28
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Сколько осталось времени считать в таймере на форме
Это тогда нужно, что бы форма отслеживала какие задачи находятся в режиме ожидания (отсчёт времени), а какие задачи выполняются. А это ещё сложнее, чем просто вывести значение переменной.
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Я же стараюсь в принципе избавить форму от постоянно повторяющихся операций.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 02.03.2017, 12:40   #29
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Если в переменную - форма забирает данные тогда, когда появились эти данные.
НЕТ, НЕТ, и еще раз НЕТ.
Форма забирает данные(конечно при условии наличия таковых) тогда когда сочтет нужным.
в частности возможно в тот момент когда ВСЕ потоки сложили их.
после этого она имеет право(если такое нужно) очистить их, поуправлять немножко потоками, да мало ли что она может.

А потоки вовсе не обязаны дожидаться форму.
Если они только и делают что ждут форму, то проще все таймеры из потоков сложить на форму и вперед. Будет тот же самый эффект.
Задача потоков ДЕЛАТЬ что-то НЕЗАВИСИМО от других.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.03.2017, 12:49   #30
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Проблему это не решит
а есть ли проблема?
данные, если уж нужно выводить, имеет смысл выводить как только они появились, смысл их ждать, тормозить всех и тп?


Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Я и хочу этого избежать, тем способом, который уже написал - синхронизировать потоки между собой, да бы эти потоки "работали сообща".
синхронизация это наоборот, не сообща, а по очереди.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синхронизация потоков _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