Форум программистов, компьютерный форум CyberForum.ru

СИ: одновременный вызов функции. библиотека. - C++

Восстановить пароль Регистрация
 
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
19.07.2011, 12:27     СИ: одновременный вызов функции. библиотека. #1
Трудно задать вопрос, когда не очень понятно, что нужно получить в ответ. Попробую так:

Пусть есть некий my_lib.so/dll содержащий функцию foo(). Поскольку к foo() может произойти "одновременно" несколько обращений, то желательно каким либо образом организовать их обработку (в очередь поставить или ещё что).

Собственно вопрос, что именно нужно сделать и в какую сторону смотреть? Как правильно решаются подобные задачи?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2011, 12:27     СИ: одновременный вызов функции. библиотека.
Посмотрите здесь:

C++ Вызов функции
C++ Вызов функции в C++
C++ Вызов функции
C++ Вызов функции!
Вызов функции в возврате значения функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
19.07.2011, 12:31     СИ: одновременный вызов функции. библиотека. #2
возможно в сторону многопоточности и очереди выполнения?
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
19.07.2011, 13:29  [ТС]     СИ: одновременный вызов функции. библиотека. #3
Пока так:
Добавил переменную flag. Вставил в foo() бесконечный цикл проверяющий её значение перед телом функции и изменяющий на true/false при начале/окончании foo(). С помощью этих и похожих извращений реализовал некое подобие очереди. Выглядит не очень, но на пару дней хватит.

pthreads оставил на вечер - похоже, что потребует некоторого времени для изучения. Если вдруг, появятся еще какие-либо варианты, буду рад почитать.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
19.07.2011, 14:40     СИ: одновременный вызов функции. библиотека. #4
Цитата Сообщение от Vladimir. Посмотреть сообщение
Пока так:
Добавил переменную flag. Вставил в foo() бесконечный цикл проверяющий её значение перед телом функции и изменяющий на true/false при начале/окончании foo(). С помощью этих и похожих извращений реализовал некое подобие очереди. Выглядит не очень, но на пару дней хватит.

pthreads оставил на вечер - похоже, что потребует некоторого времени для изучения. Если вдруг, появятся еще какие-либо варианты, буду рад почитать.
...
Как нельзя делать синхронизацию!

Пожалуй самая большая глупость, какую только можно сделать чтобы приостановить поток – это загнать его в пустой цикл:
C++
1
while( некое_условие ) {}

То, чем вы занимаетесь назывется синхронизация.
Вот статья на тему: http://www.sofmos.com/lyosha/Article...hreading2.html
Yandex
Объявления
19.07.2011, 14:40     СИ: одновременный вызов функции. библиотека.
Ответ Создать тему
Опции темы

Текущее время: 21:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru