| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > [C++] Winsock и Потоки (Thread) |
| Автор: Scrolly 25.10.2007, 16:33 | ||
Программа пытается отправить сообщение, текстовое, используя сокеты. Я хотел бы саму процедуру отправки с помощью функции send запустить в отдельном потоке, как следствие не чего не получается. Если же не использовать поток, то все проходит отлично... Прикреплен файл сервера к которому происходит подключение. |
| Автор: JackYF 25.10.2007, 17:45 |
| Scrolly, твой вопрос должен был быть задан в http://forum.vingrad.ru/forum/c-c++system-programming-WinAPI.html. |
| Автор: Scrolly 25.10.2007, 17:51 |
| Извеняюсь... Тогда просьба админам перекинуть тему в WinApi, или затереть ее. Создам заново. Заранее спасибо. |
| Автор: AndreyK 25.10.2007, 19:39 | ||||||||||
| надо ещё правильно организовать работу Например синхронизировать поток с кодом основной программы:
Функция WaitForSingleObject ждёт команды от основной программы, что всё в порядке и можно начинать передавать, а затем сама сообщает основной программе, что передача завершена и можно закрывать сокет (функцией SetEvent ). Но лучше и сам сокет открывать и закрывать в потоке. А основная программа тоже должна быть зацикленна и не завершаться, пока поток не прекратит работу. Примерно так:
Если из кода потока и основного потока идёт обращение к общим переменным, то надо при помощи тех-же WaitForSingleObject SetEvent и ResetEvent организовать поочерёдную работу потоков во время работы с этими переменными. Т.е. все потоки ждут, пока какой-то один не закончит работу с этими переменными... PS А нет ... синхронизацию доступа лучше проводить при помощи функций:
и
а секция инициализируется так:
|
| Автор: Scrolly 26.10.2007, 10:09 |
| Спасибо, работает. Только вот про CRITICAL_SECTION csss; не вовсем понял, где об этом подробнее можно почитать? мб ссылка есть? |
| Автор: Scrolly 26.10.2007, 12:04 |
| )))) Точно!) |