Что это за дизайн? Это связано с темами - PullRequest
2 голосов
/ 23 сентября 2011

Простите, если я пропустил очевидный ответ, но я искал это и не могу его найти. Я пытаюсь создать многопоточную программу, которая использует мьютексы как можно меньше. Ниже приведен основной дизайн. Я хочу знать, воссоздаю ли я колесо и, если да, то какой шаблон дизайна / алгоритм / подход я невольно позаимствовал?

У меня есть глобальный объект, который в основном представляет собой очередь сообщений для нескольких потоков. Каждый раз, когда создается поток, он получает функцию, которой он отправляет сообщения. Только поток может получить доступ к функции. Когда сообщение отправляется в функцию, объект принимает сообщение и помещает его в очередь.

Это очередь FIFO, которая в основном работает как общая память для связи между потоками. Дело в том, что только глобальный объект может добавлять или удалять сообщения. Каждый поток регулярно проверяет очередь. Каждый раз, когда он находит сообщение, которое он может использовать, он копирует это сообщение себе и затем сообщает глобальному объекту, что он читает данные. Если поток просматривает сообщение и не нуждается в нем, он все равно сигнализирует, что прочитал сообщение, но не копирует его. Когда каждый поток просматривает данные, глобальный объект удаляет сообщение.

Вот и все. Это просто. Это съедает память. Это просто для того, чтобы избежать блокировки переменных и т. Д.

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Это шина сообщений . Не пишите самостоятельно, возможно, у вас есть фреймворк.

0 голосов
/ 23 сентября 2011

Термин операционной системы, который вы ищете, это Передача сообщений.

http://en.wikipedia.org/wiki/Message_passing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...