C++ 正确同步的C++;代码

C++ 正确同步的C++;代码,c++,synchronized,C++,Synchronized,前一段时间我被问到一个问题,我不知道如何回答,这个问题打在下面:有谁能告诉我应该如何使用C来做这件事吗++ 编写代码以帮助教授和他/她的学生在办公时间同步。当然,如果周围没有学生提问,教授想小睡一会儿;如果有学生想提问,他们必须相互同步,并与教授同步,以便 每次只有一个人在讲话, 每个学生的问题都由教授回答,并且 在教授回答上一个问题之前,没有学生再问另一个问题。 您需要编写四个过程:AnswerStart()、AnswerDone()、QuestionStart()和QuestionDone(

前一段时间我被问到一个问题,我不知道如何回答,这个问题打在下面:有谁能告诉我应该如何使用C来做这件事吗++

编写代码以帮助教授和他/她的学生在办公时间同步。当然,如果周围没有学生提问,教授想小睡一会儿;如果有学生想提问,他们必须相互同步,并与教授同步,以便 每次只有一个人在讲话, 每个学生的问题都由教授回答,并且 在教授回答上一个问题之前,没有学生再问另一个问题。 您需要编写四个过程:AnswerStart()、AnswerDone()、QuestionStart()和QuestionDone()。 教授循环运行代码:AnswerStart();回答;答:()。直到有人提出问题,AnswerStart才会返回。每个学生循环运行代码:QuestionStart();提问;问题完成()。QuestionStart()在轮到学生提问之前不会返回。既然教授认为学生不等待答案是粗鲁的,那么问题就不应该在教授回答完问题之前返回。

P>可能是你正在寻找的。 这听起来像是一个家庭作业问题,因为你能告诉我们你尝试了什么吗?

可能就是你想要的


这听起来像是一个家庭作业问题,根据《你能告诉我们你试过什么吗?

我假设这是一个课堂作业,所以我不会给出答案


我会用一个活动对象来处理这个问题,我假设这是一个类作业,所以我不会给出答案


我将使用一个活动对象来处理这个问题

您必须对变量进行序列化访问,并使用锁来确保多个操作不会同时发生。本文档的第一部分介绍了如何在C++中使用锁。希望这能为你指明正确的方向


您必须对变量进行序列化访问,并使用锁来确保多个操作不会同时发生。本文档的第一部分介绍了如何在C++中使用锁。希望这能为你指明正确的方向


标准C++中没有实现多线程和线程同步;这是使用特定于操作系统的库来完成的。您在哪个操作系统中执行此操作?(以防万一;OS=操作系统)@dario_ramos:他们现在是;C++ 11有一个标准化的内存模型和一个线程支持库。@迈克:我很确定OP使用的是一个旧的标准(因为他标记了他的后C++而不是C++ 11),但是无论如何,让他知道这一点是很好的。1.@MikeSeymour我的编译器还不支持C++11线程…:/BuST.ToWo非常接近C++中即将到来的——多线程和线程同步在标准C++中没有实现;这是使用特定于操作系统的库来完成的。您在哪个操作系统中执行此操作?(以防万一;OS=操作系统)@dario_ramos:他们现在是;C++ 11有一个标准化的内存模型和一个线程支持库。@迈克:我很确定OP使用的是一个旧的标准(因为他标记了他的后C++而不是C++ 11),但是无论如何,让他知道这一点是很好的。1.@MikeSeymour我的编译器还不支持C++11线程…:/至少我们有一个BooST。Boo..Type非常接近C++即将到来的内容——我在考虑使用一个数据结构来组织每个问题,所以模仿一个先到先服务算法,感谢Link在队列中的正确路径,您可能只需要一个信号灯或监视器来防止竞争条件发生。这基本上改写了您的问题,并给出了一些伪代码解决方案:我正在考虑使用数据结构来组织每个问题,因此为了模拟先到先得的算法,感谢链接您在队列的正确轨道上,您可能只需要一个信号灯或监视器来防止竞争条件发生。这基本上改写了您的问题,并给出了一些伪代码解决方案:我故意含糊其辞,赫伯·萨特:我故意含糊其辞,赫伯·萨特: