![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Собственно не работает простейшая прога, не пойму почему???
|
|||
|
||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Народ, реально уже голову разбил
![]() ![]() |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
iPlay, А что не работает то?
Это сообщение отредактировал(а) ~FoX~ - 9.10.2010, 08:09 |
|||
|
||||
Dom |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
И как предполагается он должен работать? Поскольку смысла код по большому счету не имеет.
|
|||
|
||||
xkor |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 8.1.2007 Где: Питер Репутация: 1 Всего: 4 |
iPlay, и юзать Sleep в основном потоке оконного приложения не хорошо)
смею предположить что вы хотите чтоб ваш код был таким:
и что вы слабо представляете что такое и для чего надо использовать synchronize... Это сообщение отредактировал(а) xkor - 9.10.2010, 23:26 |
|||
|
||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Проблема была в том что потоки, просто не выполнялись!!!! Код взял в инете
![]() ![]() Еще вопрос можно, потоки заработали, интересно как синхронизировать с помощью критических секций? Есть код первый поток должен сгенить число, а второй возьмет ну например синус от него.
Это сообщение отредактировал(а) iPlay - 10.10.2010, 22:06 |
|||
|
||||
Dom |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
Пару подсказок:
1. Нельзя обращаться к VCL компонентам из кода потока. 2. Если очень хочется, то можно, но только через процедуру Synchronize, которая выполняется в контексте главного потока. А для ознакомления с потоками тут есть отличная статья - http://forum.vingrad.ru/forum/topic-60076.html |
|||
|
||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
То есть насколько я понял, прошлый код с критическими секциями
неважно, какой поток захватит выполнение, поскольку я ограничил критическими секциями ресурс то они полюбому параллельно не выполнятся. Тогда вопрос, можно дополнять критические секции функцией synchronize();???? |
|||
|
||||
cat512 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
Не вводите людей в заблуждение! А кто запрещает???
Vcl-компонент? - ДА Обращение из кода потоков? - ДА Очень хочется? - да ![]()
Не надо ничего дополнять, используй либо секции либо synchronize. Это сообщение отредактировал(а) cat512 - 11.10.2010, 09:22 |
||||||
|
|||||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
То есть правильная реализация прошлой программы такова???
Просто я когда вот так сделал, все равно захватывает 2й поток иногда первее??? Чето я не пойму ![]() |
|||
|
||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Собственно просто, когда я работал с WinAPI там все четко, создавался поток в него передавался адрес функции которая обрабатывает данный поток, а реализацию писал в этой функции.
Тут как-то интересно, функция tthread_name.execute выполняется и первым и вторым потоком, не могу понять что если мне нужно чтобы один поток выполнял одно а другой другое...??? Я просто скорее всего чего то недопонимаю.... А пример с критическими секциями, как раз таков что нужно чтобы один поток делал одно а другой другое. |
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 5 Всего: 8 |
Запрещает архитектура VCL, которая однопоточна. Например во время добавления строки в мемо может пересоздаться Handle memo из-за изменения системных настроек или действий в основном потоке. Про другие компоненты я вообще молчу. Результат работы такой предсказуем... правда не для конечного пользователя. |
|||
|
||||
cat512 |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
Я же показал пример выше! В методах Lock, Unlock - надо просто вызывать Enter Leave - соответственно. В чём проблема? Зачем 2 критические секции???????????????????????????????????????????????????????????????????? Толку от них как от козла молока!
С классом TThread тоже самое. Функцию. которую ты передавал в winapi, в классе TThread наз. Execute
Создай либо два разных класса, либо 2 разных функции, и в зависимости от параметра вызывай их в Execute Добавлено @ 11:24 2RomanEEP
Хай себе меняется! Каким образом мне это навредит, если я использую механизмы синхронизации??? Если "нож" острый, это совсем не значит, что его нельзя использовать осторожно. Это сообщение отредактировал(а) cat512 - 11.10.2010, 12:16 |
||||||||
|
|||||||||
iPlay |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 23.9.2007 Репутация: нет Всего: 1 |
Я написал, две отдельных функции, а в зависимости от какого параметра их запускать?
|
|||
|
||||
cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
Который собственно, ты будешь определять, в зависимости от того что надо. (Либо в конструкторе либо через переменную) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |