你如何做/写这个家庭作业? (理论值)

时间:2009-03-19 15:31:29

标签: multithreading theory circular-buffer

我不是要求任何人为我做这个功课,但我提出来是因为它是对C#和线程的非常好的实用介绍,但同时我觉得它可能有点过于简单。

这真的是教授线程的最佳方式吗?在这个练习中,哪些关键线程概念“丢失”,第一次使用线程的新程序员可能会失败?

我有很多关于线程的理论知识,但过去我自己没有做过很多事情,写这篇文章时有没有人对我有任何警告?

Here's the link to the original assignment

这是目标文本:

  

1)创建一个线程安全的泛型   循环队列类并创建GUI   使用它(见下一节)。在这   上下文,线程安全意味着每个   改变的操作(方法)   队列的内容应该是   一次只执行一个线程   为了避免数据损坏。一个   循环队列实现为   固定大小数组的开头   并且队列的末尾是索引   数组。当队列填满时,   队列的开头和结尾都会   如元素那样转向更高的值   添加并最终包裹   要重用的数组中的第一个索引   记忆。这堂课也应该   抛出异常(如下所示)   如果操作是调用者   无效。

     

2)创建一个GUI来控制   生产者 - 消费者中的两个线程   时尚。 GUI将能够开始   并启动和停止生产者   和消费者线程和控制   他们修改的速度   GenericCircularQueue。

3 个答案:

答案 0 :(得分:2)

阅读本文:

第二个链接大部分都可以独立存在。

答案 1 :(得分:1)

阅读有关使用Windows C#的SyncLock或Monitor。

这是了解多线程的好方法,尤其是在多核的日子。

答案 2 :(得分:1)

我会说这错过了两件大事:

  • 大量的写作,读取不能锁定和饿死;结果:像这样的有界队列填满了。您需要一种方法来为读者提供更高的优先级,以便他们可以排空队列。
  • 可伸缩性---只需要一个锁读取或写入就可以很容易地使其成为线程安全的,这对于一个读者/一个编写者来说非常有用。但是,一旦你拥有大量的生产者/消费者,你就会有很多线程争用。