Лучший способ реализовать очередь доступа к общему ресурсу [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Лучший способ реализовать очередь доступа к общему ресурсу [закрыто]

Сообщение Anonymous »

Следующий простой интерфейс предназначен для предоставления доступа к стороннему API C++ из оболочки:

Код: Выделить всё

#include 
#include 
#include "thirdparty_api.hpp"

int main(int argc, char *argv[])
{
if (argc < 2) return EXIT_FAILURE;

std::cout  tpapi_run b
another result
Теперь я хочу иметь возможность вызывать эту команду tpapi_run из нескольких разных параллельных процессов, однако сторонний ресурс не может обрабатывать несколько серий вызовов параллельно, поскольку его состояние должно инициализироваться повторно для каждого нового процесса (в противном случае результаты будут повреждены). Это означает, что первый процесс, вызывающий tpapi_run, должен монополизировать API и заставить остальных ждать в очереди, пока он не вызовет другую команду, скажем, tpapi_release, которая освободит ресурс и позволит следующему процессу выполнить свои вызовы. Следующий пример иллюстрирует последовательность между тремя процессами:

Код: Выделить всё

process_1: tpapi_run a   > process_1 receives result corresponding to a
process_2: tpapi_run b   > process_2 is waiting
process_3: tpapi_run c   > process_3 is waiting
process_1: tpapi_run b   > process_1 receives result corresponding to b
...
process_1: tpapi_release > process_2 receives result corresponding to b
process_2: tpapi_run a   > process_2 receives result corresponding to a
...
process_2: tpapi_release > process 3 receives result corresponding to c
Существует ли библиотека или метод C++ для достижения этой цели?

Подробнее здесь: https://stackoverflow.com/questions/793 ... d-resource
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»