Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2011, 03:24   #1
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию Многопоточность, обратный вызов

Или по нашему multithreading and callbacks. И так, привет всем, было дело, запрягли меня в С++ писать, а тут новый стандарт и STL из коробки в VS 2010 работают, ну я как прогрессивный человек решил их использовать.
Код:
task_group tasks;
function<void ()> callback = [] { /* WooooHooo */ };
tasks.run([callback] { /* very cool multithreading. Done ? */ callback(); });
Вроде как то так, пишу сразу тут. Вроде все чисто и как надо, но не тут то было.

Собственно чего не так. Я уже испорчен правильными языками, тут и возникает вопрос, а как же вернутся в Main/UI thread из task? Не понял, как. Ладно хоть concurrent_* есть, что радует. Ну в принципе обошелся без этого, вдруг что, так вышлем MSG.

Но случилась ситуация когда:
Код:
task_group tasks0, tasks1; // somewhere...
// and now
tasks0.run([] { tasks1.run([] { /* oops, не запускается, вроде, пока не закончится предыдущий task из task0 */); });
Вот давно меня так не обламывали. Ну я спешил, документацию внимательно читать лень быо и сейчас есть, так что решил ситуация старым путем через CreateThread + hThread + WaitForSingleObject когда надо, но спрашивается с какой стати? Выходит только с главного треда можно task_group::run делать?!

Ну а вот как вы (чтобы было из коробки, слышали про boost) справляетесь с multithreading + callbacks, только прошу ну не надо этого извращения объяви в классе статический метод и передай указатель будет тебе callback, да еще объяви, что каждый раз иду и смотрю примеры как же объявить функцию.

Не ну правда, ну вот в Java
Код:
new Thread() {

@Override
void run() {
    // very cool stuff
}

}.start();
если не подзабыл чего, так а про функциональные то, я вообще молчу.

UPD:
Видимо собираются или уже интегрировать boost, но увы я не вижу в VS2010...надо обновиться что-ли.
Код:
std::thread t
{
   /* do real work here */
};
Прекрасно ведь.

UPD:
Никто не пишет многопоточные приложения с обратным вызовом в C++?

Последний раз редактировалось BOBAH13; 11.12.2011 в 20:58.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратный порядок Vapali-Pik Помощь студентам 0 28.07.2011 00:39
Обратный порядок G. J. Cezar Общие вопросы C/C++ 2 22.10.2010 15:10
Обратный алфавитный порядок ~GVS Помощь студентам 0 21.04.2010 15:54
Обратный отсчёт mager PHP 3 01.04.2009 17:16
Обратный гиперболический синус Lofty Помощь студентам 2 07.10.2008 18:20