Здравствуйте, Delphi, Вы писали:
D>Здравствуйте, Odi$$ey, Вы писали:
OE>>Здравствуйте, <Аноним>, Вы писали:
А>>>Нет, так не пойдет
А>>>Нужно чтобы это был дочерний процесс
OE>>AfxBeginThread не запускает дочерних процессов
А>>>и не вешал parent...дожидаться нужно без затрат процессорного времени(может WaitForSingleObject ?).
OE>>WaitForSingleObject точно также "повешает parent", процессор будет загружен аналогично
А>>>Если просто запцускать как указано выше, то это будет вешать прогу до момента завершения функции.
D>Наверное неправильно вопрос сформулировал, сейчас объясню ситуацию.
D>У нас есть какой то гуи утыканные кнопочками, эдитами и т.д., так вот при нажатии на кнопку должен произойти коннект куда-то, что и делает(Our_Func), естественно это подвешивает наш гуи, до тех пор пока не будет получен ответ от сервера, к которому мы коннектились, и невыполнены все операции(вобщем пока не завершится ф-ция). Чтобы наш гуи не вешался разумно использовать трэды, в этом случаи наш гуи не вешается, и там можно нажимать и вводить чего хочешь. Но в таком случае можно(и нужно) нажать на заветную кнопочку, которая запускает соответственно Our_Func, и с уже имеющимся трэдом создастся еще один, при следующем нажатии еще и т.д. Разумеется нам ненадо делать 300 коннектингов к серверу, и мы создаем очередь, а так как количество клиентов в этой очереди неизвестно это будет список(односвязный или двусвязный — смотря для чего). вот мы и исполняем наш
D>P.S. При первом нажатии на кнопочку мы добавляем элемент в очередь и запускаем наш цикл, а при последующих нажатиях идет только добавление в очередь.
D>Надеюсь теперь я лучше раскрыл проблему
Я бы сделал так: при старте программы сразу создал-бы поток.
Сбоку присобачил-бы очередь запросов. И событие, что очередь поменялась.
Порождённый поток ожидает события, просыпается, извлекает из очереди
первый запрос, обрабатывает, если очередь пуста — опять спит.
ГУЙ-поток при нажатии кнопки формирует запрос, помещает его в очередь,
поднимает событие и работает дальше.
При завершении работы ГУЙ-потока ставим в очредь спец-запрос: "кончай".
По этому запросу дополнительный поток завершается.
Очередь запросов, конечно, нужно делать потоко-безопасной. Но это мелочи.