|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.09.2016, 02:08 | #1 |
Новичок
Джуниор
Регистрация: 25.09.2016
Сообщений: 2
|
Помогите найти оптимальный вариант!
Все привет!
Руководство поставило задачу: написать программу массового обзвона сотрудников предприятия при чрезвычайных ситуациях. Из того что есть - это SIP-сервер, и в интернете нарыл компонент GTSIPAPI, который может обращаться к этому серверу и проигрывать звуковой файл абонентам. Админ SIP-сервера выделил 30 свободных каналов для обзвона, то есть одновременно можно обзванивать 30 абонентов. Абонентов с их номерами я циклом тяну из базы данных. Если абонентов до 30 или ровно 30, тот тут проблем нет, все просто: я беру по одному абоненту из базы и по каждому каналу пускаю. Но если абонентов больше 30, начинаются проблемы. Нужно задачу реализовать так, чтобы цикл выдачи абонентов приостанавливался тогда, когда все каналы заняты, и запускался, когда какой-нибудь канал освобождался, и направлял туда нового абонента. Мне рекомендовали воспользоваться в решении проблемы потоками и синхронизацией, но пока не знаю куда копать в этом направлении. Заранее спасибо. |
25.09.2016, 02:19 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
вам нужна очередь и 30 воркеров, которые будут брать номер из очереди и звонить.
все просто. в некоторых языках такое есть в коробке, в некоторых нужно чуть подшаманить Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
25.09.2016, 03:08 | #3 |
Новичок
Джуниор
Регистрация: 25.09.2016
Сообщений: 2
|
Ну очередь, я так полагаю, формируется из базы абонентов... А что такое воркеры?
|
25.09.2016, 04:32 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
те кто будет пробовать взять данные из очереди.
потоки те самые, по сути они должны работать пока есть элементы в очереди. Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
25.09.2016, 08:34 | #5 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
Мало вводных. Но для вашей цели идеально подходит такой объект синхронизации как семафор. https://ru.wikipedia.org/wiki/%D0%A1...B8%D0%BA%D0%B0) Он реализован во всех ОС, во всех АПИ. Нужно задать значение счетчика равное 30
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подскажите оптимальный вариант, для заливки программы с целью раздачи клиентам | Dennis777 | Свободное общение | 18 | 10.01.2015 15:57 |
оптимальный вариант ПК для просмотра видео высокого качества, работа с большими базами данных (техн. характеристики) | carrie bradshaw | Помощь студентам | 8 | 26.03.2014 23:15 |
Потоки. Оптимальный вариант реализации | gusluk | Общие вопросы Delphi | 33 | 06.06.2012 02:33 |
нужно найти оптимальный путь | Marina87 | Фриланс | 16 | 29.04.2010 16:01 |
найти оптимальный план производства | Baxxter | Microsoft Office Excel | 12 | 25.09.2008 23:45 |