Clarion 11-12

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
✯ Ветеран ✯
Сообщения: 1584
Зарегистрирован: 25 Март 2009, 21:55

Clarion 11-12

Сообщение gopstop2007 »

talgat55 писал(а): 12 Сентябрь 2021, 17:43 а как запускать в указанном случае ?
viewtopic.php?p=30219#p30219 смотрим пункт - Процедура проверки перед входом в программу.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
talgat55
Старожил
Сообщения: 204
Зарегистрирован: 11 Сентябрь 2008, 11:53

Clarion 11-12

Сообщение talgat55 »

ok
kreator
✯ Ветеран ✯
Сообщения: 4275
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion 11-12

Сообщение kreator »

Разве start создаёт новый процесс? Ненаучно.
We are hard at work… for you. :)
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1604
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Clarion 11-12

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

kreator писал(а): 13 Сентябрь 2021, 11:23 Разве start создаёт новый процесс? Ненаучно.
Вопрос в том, когда его использовать и как на это отреагирует эта коллаборация фич и глюков именуемая Clarion + Windows...

Я, в своё время, долго боролся при переходе.

Краткие итоги и правила
1. Если переменная используется в головной процедуре/потоке, то он НЕ должна иметь атрибут THREAD. И дело не в том, что эта операция лишена смысла, последствия могут быть самые разные, вплоть до вылета программы.
2. Использование CriticalSection в виде матрёшки, а тем более одной и той же, может привести к клинчу.
3. start лучше всего выполнять после открытия фрейма, если нет цели получить несколько независимых не знаю что. И ещё лучше не выполнять несколько start одновременно, если важен порядок выполнения. Что запустится раньше, а что позже, знает только генератор случайных чисел. Надёжнее выполнять последовательно из запускаемых процедур start(процедура1) - Процедура 1 start(процедура 2)
4. Открытие файла с атрибутом Thread в головной процедуре не обязательно приводит к его открытию во всех последующих Thread.
5. Глобальные Queue это, конечно, хорошо, но муторно. Разумнее использовать IMDD
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5494
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion 11-12

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

Губин Игорь писал(а): 13 Сентябрь 2021, 11:47 Надёжнее выполнять последовательно из запускаемых процедур start(процедура1) - Процедура 1 start(процедура 2)
Обсуждали: если нужно запустить несколько потоков (например при запуске программы открыть несколько MDI окно),
то очень хорошо работают события.
- Start(Proc1) и ждём событие об успехе выполнения;
- После запуска из Proc1 посылаем событие в родительский поток об успешном запуске;
- Запускаем следующий поток Start(Proc2) и ждём событие об успехе и т.д.
Губин Игорь писал(а): 13 Сентябрь 2021, 11:47 4. Открытие файла с атрибутом Thread в головной процедуре не обязательно приводит к его открытию во всех последующих Thread.
А разве должно ?
Атрибут Thread для файла говорит о том, что в каждом потоке у него будет отдельная копия буфера обмена (RECORD).
«V» значит Вендетта !
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1604
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Clarion 11-12

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

Игорь Столяров писал(а): 13 Сентябрь 2021, 13:29 Обсуждали: если нужно запустить несколько потоков (например при запуске программы открыть несколько MDI окно),
то очень хорошо работают события.
- Start(Proc1) и ждём событие об успехе выполнения;
- После запуска из Proc1 посылаем событие в родительский поток об успешном запуске;
- Запускаем следующий поток Start(Proc2) и ждём событие об успехе и т.д.
Я пробовал такой вариант, но возникали странные задержки. Потому-то и сделал шаблон в котором поток запускает следующий по своей готовности. Так никаких вариантов на то, что сработает не так.

У меня требуется при старте приложения запуск потоков в строго определённом порядке.
Игорь Столяров писал(а): 13 Сентябрь 2021, 13:29 А разве должно ?
Ну так было же. Да и почему-то файл то считается открытым, то - нет.

Кстати, для IMDD раньше файл считался открытым. Сейчас проверять лень.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5494
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion 11-12

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

Губин Игорь писал(а): 13 Сентябрь 2021, 14:19 Кстати, для IMDD раньше файл считался открытым. Сейчас проверять лень.
Возможно здесь идёт речь об параметре /THREADEDCONTENT для IMDD файла.
Т.е. речь о доступности файла во всех потоках, но не его открытости ...
«V» значит Вендетта !
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1604
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Clarion 11-12

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

Игорь Столяров писал(а): 13 Сентябрь 2021, 14:27 Возможно здесь идёт речь об параметре /THREADEDCONTENT для IMDD файла.
Проверял на варианте, когда в каждом потоке своё содержимое, т.е. формально, независимые файлы.

Да не важно сейчас всё это...
Это я только кажусь дураком! На самом деле я полный идиот!
talgat55
Старожил
Сообщения: 204
Зарегистрирован: 11 Сентябрь 2008, 11:53

Clarion 11-12

Сообщение talgat55 »

У меня проект multi dll ( с63- с11 ) - успешно заработал все ОК ! всем спасибо !
Ответить