![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Apel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 30.8.2006 Репутация: нет Всего: нет |
Мне нужно, чтобы некоторая работа (чтение из сокета) постоянно выполнялась в отдельном потоке. Хотелось бы оформить всё это в виде класса, который управляет потоком и позволяет получить результат работы (пакет данных). Как я себе представляю, результат работы метода-потока должен помещаеться в private член-буфер и возвращаться public-методами.
Проблема: Функция CreateThread() не принимает в качестве параметра не static член класса, а из static члена не получается получить доступ к private членам. Подозреваю, что если объявить функцию потока вне класса, то всё будет работать, а как нужно делать в рамках объектно-ориентированного подхода? |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
boost::thread() и boost::bind() - все что тебе нужно.
лучше конечно boost.asio ;) |
|||
|
||||
kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Можно еще QThread из Qt или заюзать модуль QtNetwork...
-------------------- ![]() |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Зато у CreateThread есть LPVOID lpParameter - куда можно передать указатель на объект. Если функция будет static член класса, то доступ к private будет автоматически. Но насколько я знаю использование этой функции крайне не рекомендовано. Следует использовать _beginthread Добавлено через 4 минуты и 44 секунды
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
Apel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 30.8.2006 Репутация: нет Всего: нет |
Объект то ещё не создан, как я могу передаь указатель?
из статического члена нет доступа к закрытым членам...
ошибка: не статическая ссылка не член должна указываться относительно заданного объекта. Это сообщение отредактировал(а) Apel - 15.11.2010, 14:06 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Можно передать указатель, на указатель. Т.е. адрес переменной, в которой будет храниться адрес объекта. Эта переменная (с адресом объекта) должна существовать до момента, когда адрес объекта можно будет скопировать в локальную переменную потока, после чего ее можно уничтожить. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |