![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ButtonOFF |
|
|||
|
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Ребята добрый вечер.
На повестке дня создать TCP сервер (он же клиент) со своим протоколом передачи информации. С сетевой стороны будут использоваться порты завершения (на край WSAEventSelect). Будут висеть потоки или поток обрабатывающий сокеты (их будет несколько) на входящий данные и подключение клиентов. Проблема сейчас такая, я не хочу использовать потоки обслуживающие сокеты для обращения к базе данных и выполнения каких то вычислительных операций. Чувствую что должен быть какой-то механизм передачи пакета данных (не сетевого, а структуры или хотя бы указателя) другому потоку типа SendMessage только потоку. Конечно можно что-нибудь придумать и это будет работать, но хотелось бы найти иное решение, такое есть? Т.е я хочу повесить всю обработку запросов и отправку данных на другой поток и что бы этот поток извлекал "задачи" из очереди поставленные другим потоком а в свободное время спал. Я склоняюсь к портам ввода/вывода, можно их для этих целей использовать? |
|||
|
||||
| k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
У потоков и так разделяемая память, только доступ к ней нужно синхронизировать (или типа того). Вот тут могут быть некоторые полезные подсказки: http://stackoverflow.com/questions/3868403...ed-synchronized
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| ButtonOFF |
|
|||
|
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Poseidon, ну наример мне нужно наверное потоку для работы с БД отправлять данные типа структуры или буфера, но я от этого варианта наверное откажусь
Ну в общем я порылся, есть оказывается ф-ия отправки сообщения потоку. Сейчас схема у меня такая. Поток главного окна создает мой класс сервера. Из него создается 1 поток для прослушки входящих соединений и привязывает новые сокеты к порту завершения, и еще n кол-во = кол-ву процессоров уже рабочие потоки которые читают из порта завершения, потом они так же будут работать с БД поэтому мне кажется что это нормальное решение. Будет наверное еще 1 поток который будет добавлять новые события к порту завершения на выполнение на сокетах (отправку или подключение к другому серверу). Вроде все нормально, есть пока что 1 но. Мне надо писать лог, а запись в файл дорогая операция + если синхронизировать все потоки то выигрыша в скорости не получится никакого, так вот я решил слать сообщения главному окну через
Но при приеме в главном потоке у меня почему-то каша, т.е почти все сообщения перезаписываются другими, т.е вместо 10 разных строк 10 одинаковых пока что на этом этапе застрял. |
|||
|
||||
| ButtonOFF |
|
||||||
|
улетевший ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Народ, кто знает, почему TXMLDocument когда его создаю в памяти указываю версию и кодировку получается без кодировки ? А если сохранить на диск то кодировка появляется. т.е
На диске
А в памяти
И кодировка ### нужна, без нее почемуто, при условии что есть русские буквы, не открывается XML в TXMLDocument'е. А сохранять на диск нет возможности.
Это сообщение отредактировал(а) ButtonOFF - 5.4.2013, 12:46 |
||||||
|
|||||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |