Вверх ↑
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
#1: 2018-08-24 20:01:32 ЛС | профиль | цитата
Доброго вечера.

Вопрос следующий:
есть 2 потока, каждый выполняет свою задачу, как с узнать что оба потока завершили свою работу? Не с помощью ли компонента Events? (Netspirit, http://forum.hiasm.com/post/269657).
карма: 0

0
Разработчик
Ответов: 26214
Рейтинг: 2138
#2: 2018-08-24 22:33:44 ЛС | профиль | цитата
Gunnman писал(а):
есть 2 потока, каждый выполняет свою задачу, как с узнать что оба потока завершили свою работу?

Так вроде у потоков точка есть специальная для этого
Busy=Содержит 1, если поток запущен, или 0 - в противном случае

Редактировалось 2 раз(а), последний 2018-08-24 22:35:31
карма: 22

0
Ответов: 4639
Рейтинг: 755
#3: 2018-08-26 12:27:22 ЛС | профиль | цитата
1) Можно с помощью Events - но для нескольких потоков нужно несколько Events и дожидаться сигнала от каждого
2) Можно у компонента Thread добавить точку Handle - тогда на ней можно делать WaitObject (избавляет от Events)

Для себя делал компонент WaitMultiple - аналогично WaitObject, но верхние точки - динамические, можно ожидать сигнала от нескольких объектов за один раз (с параметром "ждать сигнала от всех" или от одного любого объекта)
карма: 26

0
Ответов: 9906
Рейтинг: 351
#4: 2018-08-26 16:36:20 ЛС | профиль | цитата
Netspirit писал(а):
Для себя делал компонент WaitMultiple

А чего не добавили...
Вполне себе логичная обертка над WinApi.
Можно даже предположить, что нереализуемая иными средствами.

nesco, а

Редактировалось 1 раз(а), последний 2018-08-26 21:35:26
карма: 9

0
Разработчик
Ответов: 26214
Рейтинг: 2138
#5: 2018-08-26 22:36:42 ЛС | профиль | цитата
Че, а? Я не против. Выкладывайте код, добавлю.
карма: 22

0
Ответов: 655
Рейтинг: 18
#6: 2018-08-26 23:37:55 ЛС | профиль | цитата
Netspirit, поделитесь вашим WaitMultiple пожалуйста
карма: 0

0
Ответов: 4639
Рейтинг: 755
#7: 2018-08-27 11:39:24 ЛС | профиль | цитата
Тута: WaitMultiple 2018-08-27 NS.zip
карма: 26

0
файлы: 1WaitMultiple 2018-08-27 NS.zip [43.9KB] [476]
Ответов: 655
Рейтинг: 18
#8: 2018-08-27 12:13:38 ЛС | профиль | цитата
Netspirit, спасибо, буду разбираться.
п.с.nesco, если Netspirit, разрешит мб добавить его компонент к остальным компонентам?
карма: 0

0
Разработчик
Ответов: 26214
Рейтинг: 2138
#9: 2018-08-27 12:29:34 ЛС | профиль | цитата
Добавил я его уже вместе с примером, проверяйте.
карма: 22

0
Ответов: 4639
Рейтинг: 755
#10: 2018-08-27 12:36:17 ЛС | профиль | цитата
Events и Sleep привести к человеческому виду не хочешь?
карма: 26

0
Разработчик
Ответов: 26214
Рейтинг: 2138
#11: 2018-08-27 20:55:21 ЛС | профиль | цитата
Netspirit писал(а):
Events и Sleep привести к человеческому виду не хочешь?

Вроде по Sleep не пришли к общему знаменателю. А Events разве обсуждали, в упор не помню? Тут надо послушать начальника транспортного цеха Galkov, ау, че скажешь?

Редактировалось 1 раз(а), последний 2018-08-27 20:55:44
карма: 22

0
Ответов: 9906
Рейтинг: 351
#12: 2018-08-28 04:27:59 ЛС | профиль | цитата
Вообще не понял, о чем это вы .................
карма: 9

0
Разработчик
Ответов: 26214
Рейтинг: 2138
#13: 2018-08-28 10:43:43 ЛС | профиль | цитата
Galkov писал(а):
Вообще не понял, о чем это вы .................

Когда-то вроде Sleep разбирали, что его менять надо, с тобой вместе, кстати. А вот про Event я, увы, ничего вспомнить не могу.
карма: 22

0
Ответов: 4639
Рейтинг: 755
#14: 2018-08-28 11:06:14 ЛС | профиль | цитата
Events Mod 1-2.zip: убраны лишние точки, совместимость сохранена. При открытии существующих схем появится сообщение об отсутствующих точках, после пересохранения схемы исчезнет, работоспособность никак не поменяется.

(А комментарий в примере WaitMultiple - nesco пропустил)

Sleep mod v1-3.zip:
- выброшена точка doSleepMks
- добавлена точка Delay
- интерпретация Delay изменена с микросекунд на миллисекунды
В связи с чем существующие схемы нужно переделать. Я очень не хочу цеплять совместимость с изначально корявой реализацией. Предлагаю просто забыть, что был когда-то такой старый компонент, у которого параметром doSleep были "такты" процессора, и был метод doSleepMks, у которого задержка измерялась микросекундами (на современных компьютерах примененный там способ задержки не давал никакой точности даже по сравнению с обычным sleep(), не говоря уже о микросекундах). Тем более, что старый вариант был практически неюзабельным по причине загрузки процессора, что ещё облегчает потерю совместимости.

В случае применения исправления нужно выполнить поиск по примерам, использующим эти компоненты и поправить. То же - в справке по компонентам.
карма: 26

0
файлы: 1Sleep mod v1-3.zip [1KB] [481]
Ответов: 4639
Рейтинг: 755
#15: 2018-08-31 11:14:46 ЛС | профиль | цитата
Ну, и о чем молчим?
карма: 26

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)