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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2017, 17:17   #41
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Если же речь все-таки о том что некоторые отсчеты "запаздывают" (точнее замедляют) свой "бег" по сравнению с другими отсчетами
Такой проблемы нет.
Цитата:
Сообщение от evg_m Посмотреть сообщение
чтобы выводить в одно время, этим заниматься должен кто-то один
Именно "должен" ? Прям вот вообще без вариантов ? Редизайн конструкции возможен, но тогда рано или поздно возникнет проблема "запаздывания", так как те задачи, которые были каждая в своём потоке - окажутся в одном потоке.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 02.03.2017, 17:29   #42
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
так как те задачи, которые были каждая в своём потоке
какие задачи? пока у нас ровно одна задача(следить за временем) для потоков
Цитата:
"маленькие" потоки, считают оставшееся время до начала выполнения задачи; выводят это время в Label, у каждого Б свой Label.
другие потоки живут своей жизнью и нас мало волнуют, или же нет ?...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.03.2017, 17:44   #43
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
какие задачи? пока у нас ровно одна задача(следить за временем) для потоков
Один поток А == одна задача; у каждой задачи своё время ожидания, которое отсчитывает каждый поток Б, создаваемый каждым потоком А.
Цитата:
Сообщение от evg_m Посмотреть сообщение
другие потоки живут своей жизнью и нас мало волнуют
Не совсем так ... Изначально, одновременно выполняться может только одна задача (потоки А); с этим я справился. И пока не реализован мой Y - картина следующая:
каждый поток Б живёт своей жизнью, и его не волнуют соседние потоки Б. Из-за этого вывод оставшегося времени происходит не одновременно.
Я хочу сделать так, что бы все существующие потоки Б работали одновременно, или "сообща"; таким образом вывод оставшегося времени будет происходить одновременно.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 02.03.2017, 20:31   #44
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

не путайте и не мешайте две разные задачи.
1. слежение за временем, что собственно делают и должны делать потоки.
2. отображение времени на экране(форме/label).

потоки следят и работают так как они хотят НЕ тратя своего времени на вывод и общения между собой.

форма выводит то что хочет(узнавая нужное у потоков) так как желает и как удобно человеку.
ВОЗМОЖНО с некоторой задержкой (до секунды), ничего человек наблюдатель от этого не потеряет. он же только смотрит, и НИЧЕГО не делает(судя по приведенному скрину).
а РАБОЧИЕ потоки спокойно используют свои актуальные (на данную миллисекунду) данные, которые будут АКТУАЛИЗИРОВАНЫ формой через десяток миллисекунд(или чуть раньше или чуть позже. Никакой человек этого и не заметит.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.03.2017, 23:24   #45
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
судя по приведенному скрину
Приведённый скрин - лишь морда уже настроенных задач. В этой программе есть управление: запуск/остановка/сброс конкретной задачи, запуск/остановка всех задач.
Настройка задач пока на уровне файлов.
Цитата:
Сообщение от evg_m Посмотреть сообщение
не путайте и не мешайте две разные задачи
Цитата:
Сообщение от evg_m Посмотреть сообщение
и должны
Вот это вот вообще не понятно; почему должны ? Что им мешает делать то, на что они технически способны ?
Цитата:
Сообщение от evg_m Посмотреть сообщение
Никакой человек этого и не заметит
Изначально делается для себя, и как любому создателю, хочется как лучше; ибо недостатки видны именно мне.

Вопрос опять скатился в философию.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 02.03.2017 в 23:28.
OmegaBerkut вне форума Ответить с цитированием
Старый 03.03.2017, 09:29   #46
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Вот это вот вообще не понятно; почему должны ? Что им мешает делать то, на что они технически способны ?
Философское ПРАВИЛО ООП. Разделение полномочий.

Цитата:
Изначально делается для себя, и как любому создателю, хочется как лучше; ибо недостатки видны именно мне.
это ваш выбор
1. можете наблюдать изменения в "реал-тайм", и видеть то что видите.
2. можете отказаться от "реал-тайм" и сгладить режим наблюдения.
программа — запись алгоритма на языке понятном транслятору

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

Цитата:
Сообщение от evg_m Посмотреть сообщение
это ваш выбор
1. можете наблюдать изменения в "реал-тайм", и видеть то что видите.
2. можете отказаться от "реал-тайм" и сгладить режим наблюдения.
Вот такая постановка дел меня устраивает ... Мне даже теперь больше нравится эта "проблема" под названием "реал-тайм".
А вообще, мою задачу можно решить, не прибегая к форме ... Нужно синхронизировать потоки с системными часами.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 03.03.2017 в 09:54.
OmegaBerkut вне форума Ответить с цитированием
Старый 03.03.2017, 10:01   #48
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Нужно синхронизировать потоки с системными часами.
из ссылок со второй страницы темы
Цитата:
вар 2. засекаем время нужного срабатывания (контрольное время)
периодически (в таймере) следим за текущим временем
информируем о разнице текущего и контрольного времен
и по наступлению нужного времени выполняем нужное
Цитата:
1)Засекается контрольное время
Код:


x:=Now;

2)рассчитывается время кликов исходя из контрольного времени
Код:


t1:=IncSec(x, 1);
t2:=IncSec(x, 5);
...
x.Enabeled:=true; // и запускаем таймер( см.3)

3) периодически (в каком-то одном(!) таймере)
Код:


if (t1<now) // проверяем наступление времени
and (t1>0) //и необходимость клика
then begin
//дабы избежать повторного клика
t1:=0; // сбрасываем необходимость
// и выполняем нужный клик
end;

if t2 .....

self.Enabled:=false; /// если все что хотели сделали Останавливаем таймер
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.03.2017, 10:52   #49
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

evg_m, у меня это выглядит чуточку проще ...
Было так (псевдокод):
Код:
while (какое нибудь условие выхода)
{
	рассчитали время;
	вывели время;
	Thread.Sleep(касарь);
}
Стало:
Код:
while (какое нибудь условие выхода)
{
	рассчитали время;
	вывели время;
	Thread.Sleep(касарь-DateTime.Now.Millisecond);
}
По коду изменений практически нет.

Как это выглядит на морде:


Девятки после точек приводить к нулям не имеет смысла, так как после завершения отсчёта и выполнения задачи эти цифры могут быть какими угодно; например сейчас у меня в "Такси" .959[0000].
Хотя опять же ... До начала цикла дождаться когда DateTime.Now.Millisecond будет в определённых пределах - и будет красота.

Вместо 1000 можно делать 999, но от "произвольных миллисекунд" старта потока это не избавит.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 03.03.2017 в 13:26.
OmegaBerkut вне форума Ответить с цитированием
Старый 03.03.2017, 11:33   #50
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
у меня это выглядит чуточку проще ...
т.е. на пятой странице пришли к тому что было на второй.
или мы опять говорим на разных языках?

Вы добились чего хотели?
Ну и слава богу, которого не существует.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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