![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: нет Всего: 1 |
Нужно написать класс обертку(или группу классов),так чтобы он взаимодействал с любым другим его классом X и позолял запускать методы X в отдельном потоке,в своем потоке и т.п.
(Что-то намекали на шаблоны и очередь сообщений) Честно говоря я в задании сам толком не разобрался. Огромная просьба помочь либо ссылками на что-нибудь подобное,либо собственным опытом.А то я даже не знаю с чего начать |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Сильно напоминает делегаты дотнета...
В принципе это лекго реализуется на boost::bind + boost::thread и работать будет примерно так (опуская сам класс-обертку):
Если вам все нужно написать самостоятельно - это, имхо, очень большой геморрой. Но по любому исходники boost::bind тут в помощь, а уж вызов в отдельном потоке можно и самому. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: нет Всего: 1 |
Нужно все написать самому
К тому же должна быть возможность запуска как в отдельном потоке так и в текущем. И еще не может ли кто-нибудь скинуть исходник boost::bind на мыло,а то 10м с моим инетом проблема. Заранее thks. |
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Если в текущем, то, надеюсь, синхронно? Т.е. возврат к вызывающей стороне не происходит, пока вызыванный метод не завершился? Если не так, то геморрой существенно возрастает.
Это около 60 Кб (если вытягивать _все_ необходимые *.hpp из буста, то больше) кода. Довольно однородного, но все же... Ну что ж, пожалуйста. Наверное, я слишком преувеличил сложность задачи, глядя на кроссплатформенную и ужасно универсальную реализацию boost::bind http://rsdn.ru/article/cpp/delegates.xml http://www.codeproject.com/cpp/NativeDelegates.asp (англ.) http://www.codeproject.com/cpp/FastDelegate.asp (англ.) -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: нет Всего: 1 |
Спасибо большое Void и Rooslan S. Khayrov.
|
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Это одно и то же лицо Вот реализация в первом приближении. Корявая и со множеством очевидных косяков, но рабочая. Понимает свободные функции и методы с числом параметров не более двух. За реализацию класса Thread просьба сильно не пинать, так как с MT я практически не работал.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |