Кол-во открытых потоков

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7377
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Кол-во открытых потоков

Сообщение Игорь Столяров »

Привет всем !

Есть две задачи: определить текущее кол-во потоков в MDI приложении и их реальную доступность.
Первую задачу решаем через костыль:

Код: Выделить всё

TellAllChangeCurs  Routine
  Data
NextThread Long,Auto
Count      Long,Auto

  Code
  NextThread = Start(TmpThread,25000)
  Loop Count = 2 to (NextThread - 1)
    Post(Event:User + 27,,Count)
  end
Но неизвестно существует ли поток с указанным номером (MDI окно может быть уже закрыто)
Только если ожидать от него ответное событие ... целая история. :(

Может быть существуют более простые способы определения номеров работающих потоков в MDI приложении ?
Заранее спасибо ...
За теми кто отстал - не возвращаться. (С) Кодекс
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Кол-во открытых потоков

Сообщение seawolf »

А что мешает завести глобальную очередь в приложении и добавлять туда номера открываемых потоков ? При закрытии окна (потока) удалять из этой очереди текущий номер потока.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7377
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Кол-во открытых потоков

Сообщение Игорь Столяров »

seawolf писал(а): 25 Сентябрь 2023, 8:17 А что мешает завести глобальную очередь в приложении
Отсутствие желания работать в MDI приложении с QUEUE,STATIC :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Кол-во открытых потоков

Сообщение finsoftrz »

У меня через глобальную очередь. Без неё вообще никак. :-) Например, выполняете функцию "закрыть все окна". А в каком-то потоке у нас открыта форма на редактирование с изменениями. Разумеется, надо такое проверить, отменить операцию и оповестить пользователя. И таких фишек кучка.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7377
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Кол-во открытых потоков

Сообщение Игорь Столяров »

finsoftrz писал(а): 25 Сентябрь 2023, 8:37 выполняете функцию "закрыть все окна"
В шаблонах ABC для этого есть штатный метод CleanCloseDown() ...

Я понимаю, что решение с глобальным списком потоков вполне рабочее и мы его иногда даже юзаем
для блокировки повторного открытия одинаковых окон. Думал может есть ещё варианты ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Кол-во открытых потоков

Сообщение finsoftrz »

Игорь Столяров писал(а): 25 Сентябрь 2023, 8:43
finsoftrz писал(а): 25 Сентябрь 2023, 8:37 выполняете функцию "закрыть все окна"
В шаблонах ABC для этого есть штатный метод CleanCloseDown() ...

Я понимаю, что решение с глобальным списком потоков вполне рабочее и мы его иногда даже юзаем
для блокировки повторного открытия одинаковых окон. Думал может есть ещё варианты ...
Сомневаюсь, что эта функция позволяет отследить факт изменения в формах. У меня ещё переключение потоков появилось задолго до mdi tab, которое тоже имеет ограниченный функционал. Имея глобальную очередь (точнее, две, одна для потоков, вторая для окон), можно несложно прицепить все что угодно.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Кол-во открытых потоков

Сообщение Губин Игорь »

Игорь Столяров писал(а): 25 Сентябрь 2023, 8:22 Отсутствие желания работать в MDI приложении с QUEUE,STATIC
Открою большой-пребольшой секрет. :facepalm: Если нет желания работать в такой ситуации с Queue :nono: , что, в общем-то, понятно, смотрите в сторону IMDD. Скорость такая же (на не запредельных размерах под гигабайт), все проблемы с обменом берёт на себя рантайм... :nr:
Это я только кажусь дураком! На самом деле я полный идиот!
Ответить