Ioantus
|
|
1 | |
Многопоточность в Indy TCPserver12.06.2012, 14:16. Показов 2943. Ответов 2
Метки нет (Все метки)
Доброе время суток! Уже долгое время бьюсь над одним вопросом. Есть программа, очень большая и сложная. После запуска она может пару дней работать без проблем, но потом вылазят ошибки. Приводить пример кода и ошибок не буду, потому что слишком долго. В программе есть несколько компонентов Indy 10 TCPServer и несколько независимых потоков, короче приложение многопоточное. К одному ТСПсерверу может конектится 250 клиентов (для каждого создаётся отдельный поток), операции работы с клиентами описаны в обработчиках TCPServer.OnConnect и TCPServer.OnExecute (собственно, для каждого клиента эти процедуры выполняются в отдельном потоке, поэтому зачастую они выполняются одновременно). В этих обработчиках объявлены различные локальные переменные (статические, типа integer, string и динамические вроде TMemoryStream). Внимание, вопрос: Эти локальные переменные используются одновременно всеми обработчиками OnConnect и OnExecute или для каждого потока они свои? Если да, то как это можно предотвратить? Хотя-бы укажите направление поисков.
Прошу не смеяться над вопросом. Программу пишу уже третий год, за это время облазил кучу форумов, много узнал о многопоточности, но чёткого ответа на свой вопрос не нашёл. |
12.06.2012, 14:16 | |
Ответы с готовыми решениями:
2
Indy 10 TCPServer/TCPClient Error #10061 Connection refused Indy 10, TCPServer TCPClient && TCPServer Indy Components Indy 8 и Indy 10. Старая и новая версия |
LVV_
|
|
18.06.2012, 14:24 | 2 |
Попробуй использовать для синхронизации mutex или симафор;
|
Ioantus
|
|
19.06.2012, 11:17 | 3 |
Спасибо за ответ. Уже использую мьютексы и критические секции, но за идею с семафорами спасибо!
По поводу своего вопроса уже разобрался методом тыка: ни статические, ни динамические локальные переменные не являются общими для потоков подключений в Инди, тоесть их можно смело использовать. Для меня это значит, что проблемма не в них, а значит нужно продолжать искать ошибку. Тема закрыта, спасибо. |
19.06.2012, 11:17 | |
19.06.2012, 11:17 | |
Помогаю со студенческими работами здесь
3
Работа с TCPServer TCPServer и TCPClient TcpClient и TcpServer TcpServer и TcpClient Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |