Правильно синхронизированный код C ++ - PullRequest
0 голосов
/ 27 октября 2011

Некоторое время назад мне был задан вопрос, на который я не уверен, как ответить, вопрос напечатан ниже: кто-нибудь может дать мне представление о том, как мне следует поступить с помощью C ++

написать код для синхронизации работы профессора и его учеников в рабочее время. Профессор, конечно, хочет вздремнуть, если вокруг нет учеников, чтобы задавать вопросы; если есть студенты, которые хотят задавать вопросы, они должны синхронизироваться друг с другом и с профессором, чтобы только один человек говорит в любой момент, на каждый вопрос ученика отвечает профессор, и ни один студент не задает другой вопрос, пока профессор не закончит отвечать на предыдущий. Вам нужно написать четыре процедуры: AnswerStart (), AnswerDone (), QuestionStart () и QuestionDone (). Профессор запускает код: AnswerStart (); дайте ответ; AnswerDone (). AnswerStart не возвращается, пока не будет задан вопрос. Каждый ученик запускает код: QuestionStart (); задать вопрос; QuestionDone (). QuestionStart () не возвращается до тех пор, пока не настанет очередь студента задавать вопрос. Поскольку профессора считают грубым, что студент не ждет ответа, QuestionEnd () не должен возвращаться, пока профессор не закончит отвечать на вопрос.

Ответы [ 3 ]

1 голос
/ 27 октября 2011

Я предполагаю, что это задание класса, поэтому я не буду давать ответ.

Я бы обработал это с активным объектом .

1 голос
/ 27 октября 2011

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

http://www.cs.utexas.edu/~lavender/courses/cs371/lectures/lecture-10.pdf

1 голос
/ 27 октября 2011

Блокировка чтения / записи может быть тем, что вы ищете.

Это звучит как домашнее задание, согласно рекомендациям сообщества Можете ли вы сообщить нам, что вы пробовали?

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