Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конкурентное программирование, неблокирующий вызов функций 
:(
    Опции темы
primus2010
Дата 30.7.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.7.2010

Репутация: нет
Всего: нет



Цитата(HellStranger @ 30.7.2010,  13:11)
Как и ожидалось, в никсах такого простого и элегантного решения проблемы нету, но есть libpthread, о которой знающие люди говорят, что помжет... smile

А почему нелья вот так:
Код

int  shortJob(){
        //какие-нибудь переменные
        //что-нибудь делаем
        int chpid = fork(); //делимся
        if(chpid == 0){
                //в дочернем процессе запускаем долгую фунцию
                int result = doLongJob(iter);
                //делаем что-то с результатом
                //родительский процеcc в это время может быть далеко впереди, а мы имеем контекст процесса как в начале
                //shortJob
                exit(0) //завершаем дочерний процесс
        }
        //а здесь мы торопимся далее
        return 0; //или еще чего
}

PM MAIL   Вверх
SABROG
Дата 30.7.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



В чем разница между coroutines, closures и lambda? Последнее вероятно частный случай.

Цитата

А почему нелья вот так:

Можно, в Qt это обычный QEventLoop.

Цитата

функторы с колбяками.


Предлагаешь сохранять переменные в качестве данных класса и пересылать между потоками туда-сюда?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Abyx
Дата 30.7.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



Цитата(SABROG @  30.7.2010,  18:52 Найти цитируемый пост)
В чем разница между coroutines, closures и lambda?

в том что это совершенно разные вещи.
почему бы вам не почитать википедию?
PM MAIL   Вверх
borisbn
Дата 30.7.2010, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Abyx, слежу за темой. Приходит уведомление: см. Вики. Вместо ответа на врпрос - какая-то хрень. Нечего сказать/добавить - промолчи. 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Abyx
Дата 30.7.2010, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



borisbn, нашли за чем следить %)

-------

Спрашивать чем отличаются "coroutines, closures и lambda" - это глупо и неуважительно по отношению к участникам форума.
Ответ на этот вопрос не то то в первых строчках гугла, он есть в википедии - бери и читай. 
Форум - не место для копипасты из энциклопедий.

-------

По сабжу вся теория есть в статьях. все механизмы уже перечисляли.
Высокоуровневыми средствами языка сопрограммы реализуются через замыкания. Локальные переменные сопрограммы хранятся в объекте замыкания, который имеет достаточно большое время жизни - расположен в хипе, или постоянно копируется.
yield реализуется через return. для восстановления управления используется switch, или разбиение сопрограммы на функции.

Низкоуровневыми средства языка - это применением setjmp.

Средствами ОС - фиберы. Возможно это низкопроизводительно по памяти.

Низкоуровневыми средствами - сохранение стека. Сложно в реализации. Тем не менее это используют.


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.