gpt4 book ai didi

multithreading - 为多线程编程设计一个赋值

转载 作者:行者123 更新时间:2023-12-04 12:59:32 24 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。




这学期我是OS类(class)的助教。所以我被要求为 C 编程技能有限的 CS 本科生设计多线程编程作业

这不应该是一项大作业,因为它只占最终成绩的 5%。这应该是新的东西,所以学生不能只是从互联网上下载一些代码。

这就是我的想法,一个简单的消息队列服务器。

We will provide student a very dummy MQ sever which only has one thread and accepts only 2 client connections, a reader and a writer. The writer periodically send message to the queue, i.e. the sever, and the reader reads message from the queue, i.e. the sever sends the message to the reader. We will also provide the reader and the writer.

Then we ask the students to modify the sever to accept multiple readers and writers at the same time. And we will also ask for thread safety. In other words, a message should only be sent one reader, and no message is lost in the queue, that requires using of mutex.



我觉得这可能太简单了,但我此刻想不出别的。如果你在我的位置上,你会给什么任务?

最佳答案

你在使用 Unix 吗?这并不重要,您也可以为此使用 Windows。

简单地说,创建一个命名管道。

然后创建4个线程。

1 个控制线程、1 个消费者(读者)线程和 2 个生产者(编写者)线程。

生产者简单地向管道发送一个字符串,消费者获取该字符串,将其大写或其他内容并将其打印出来。

控制线程用于启动和停止其他 3 个线程。它采用简单的命令:startProducer1、startProducer2、startConsumer、停止命令和关闭命令。

这显示了不同的线程都各自工作,但同时由主控控制(知道何时关闭等)。

如果你能把它包装成一个简单的 GUI,甚至是一些简单的 Ncurses 视频显示,那么控制显示总是有可见性来接受命令并显示结果。

您可以显示如果您启动 1 个生产者但没有消费者,线程将如何阻塞。与两个生产者相同,或者消费者如何在没有生产者的情况下阻止。

使用管道意味着您不必依赖该外部程序(以及设置它、调试它、配置它和支持它的所有细节)。

Unix 和 Windows 都有命名管道(但我认为系统调用是不同的,但 POSIX 可移植性可能只是在这里工作......)。

关于multithreading - 为多线程编程设计一个赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com