Есть ли мониторы в C? - PullRequest
       30

Есть ли мониторы в C?

6 голосов
/ 04 июня 2011

Я читаю главу о синхронизации в операционной системе и читаю тему «Мониторы». Я понимаю, что мониторы - это языковые конструкции высокого уровня. Это заставляет меня задуматься, предоставляет ли C что-то вроде монитора? Возможно, библиотека, содержащая реализацию потоков posix, должна также обеспечить конструкцию монитора. Кроме того, потоки в C не являются частью stl, верно?

если да, какой заголовочный файл / библиотека содержит его, наиболее простую тестовую программу для использования мониторов и как библиотека реализует мониторы.

В книге говорится, что тип монитора - это ADT - абстрактные типы данных. Интересно, имитирует ли структура C тип данных монитора?

Спасибо

Ответы [ 4 ]

10 голосов
/ 04 июня 2011
  • C не имеет понятия о потоке и не предоставляет мониторы как синтаксическую структуру.

  • библиотека потоков POSIX - это просто библиотека.Кроме того, средства абстракции C недостаточно мощны, чтобы можно было использовать мониторы в качестве библиотечного элемента.POSIX дает примитив, необходимый для создания мониторов.

  • STL - это термин C ++ (и даже не очень хороший, поскольку он означает разные вещи для разных людей).1013 *

    для реализации монитора в C, вам понадобится структура, содержимое которой вы держите в секрете и по крайней мере мьютекс, и набор функций, работающих с этой структурой, которые начинаются с взятия мьютекса.1016 *

2 голосов
/ 04 июня 2011

C даже не поддерживает потоки, это зависит от реализации. Вам нужно будет использовать библиотеку для вашего монитора.

1 голос
/ 04 июня 2011

Вы правы, что потоки не являются частью стандартной библиотеки C.

Потоки POSIX не предоставляют мониторы специально, но все, что вы можете сделать с монитором, вы можете сделать с мьютексом и переменной условия. Или, возможно, две условные переменные, в зависимости от того, какой именно монитор вас интересует: http://en.wikipedia.org/wiki/Monitor_%28synchronization%29

0 голосов
/ 05 июня 2011

Темы предусмотрены только для следующей версии стандарта C, а не для текущей.Текущее предложение очень напоминает функциональность потоков POSIX и имеет, например, мьютексы и условные переменные в качестве управляющих структур.AFAIR мониторы не входят в их число.

...