|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.07.2009, 15:31 | #1 |
Пользователь
Регистрация: 15.09.2008
Сообщений: 59
|
Изза потока зависает программа
Не пойму , почему изза потока (thread) зависает программа. Потоки ведь нужны как раз для того , чтобы программа не зависала. Я делаю чат , в отдельный поток вынес проверку соединения. Когда запускаю поток , программа виснет. Помогите пожалуйста правильно написать поток.
Вот код двух процедур потока: Код:
|
10.07.2009, 15:40 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Обязательно прочтите теорию работы с потоками. У вас никакой код в отдельном потоке не выполняется.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
10.07.2009, 15:48 | #3 |
Пользователь
Регистрация: 15.09.2008
Сообщений: 59
|
Про потоки я читал . Этот код выполняется в отдельном потоке , и изза него не должна зависать программа. В чем ошибка ?
|
10.07.2009, 15:49 | #4 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Нет, не выполняется. Плохо читали. Для чего предназначена процедура Synchronize ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
10.07.2009, 15:51 | #5 |
Пользователь
Регистрация: 15.09.2008
Сообщений: 59
|
процедура Synchronize предназначена для обращения к VCL . Получается надо каждое обращение к компоненту indy писать в отдельной процедуре ?
|
10.07.2009, 15:53 | #6 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Все, что выполняется в Synchronize, выполняется в VCK потоке. делайте выводы. Надо просто корректно спроектировать многопоточность и все )
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
10.07.2009, 15:56 | #7 |
Пользователь
Регистрация: 15.09.2008
Сообщений: 59
|
Можете привести пример ?
|
10.07.2009, 16:07 | #8 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Synchronize предназначен именно для синхронизации с VCL потоком, т.е. в не должны выполняться потоково не безопасные методы, использоваться общие ресурсы и т.д. В самом же потоке вы должны оперировать объектами только самого потока. Т.е. если вы из потока работаете с каким- то компонентом, то вы его должны создать в потоке и работать с ним. Для простоты использования, можно пользоваться родным для Indyклассом TidThread , который в последних версиях выполнен в виде отдельного компонента на вкладке Indy/Misc , для синхронизации внутри него лучше использовать метод TidSync.Synchronize из модуля Idsync
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
10.07.2009, 16:27 | #9 | |
Пользователь
Регистрация: 15.09.2008
Сообщений: 59
|
Цитата:
|
|
10.07.2009, 19:15 | #10 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Тогда вам рано читать про потоки. Любой компонент- объект, делайте выводы.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
При создании нескольких экземпляров класса приложение зависает | Mixasik | Общие вопросы C/C++ | 1 | 25.04.2009 13:25 |
Мышь зависает(вирусы!!!) | OPEOP | Безопасность, Шифрование | 3 | 28.12.2008 16:56 |
VB6. Программа зависает при выполнении. | Artinka | Помощь студентам | 2 | 03.04.2008 00:06 |
После подключения dll комп зависает!!! | Irat | Помощь студентам | 1 | 07.02.2008 21:18 |