0

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

这真的是教授线程的最好方法吗?在本练习中“丢失”了哪些关键线程概念,第一次使用线程的新程序员可能无法观察到什么?

我有很多关于线程的理论知识,但过去我自己不需要做很多,写它时有人对我有什么警告吗?

这是原始作业的链接

这是目标文本:

1) 创建一个线程安全的通用循环队列类并创建一个 GUI 来使用它(参见下一节)。在这种情况下,线程安全意味着更改队列内容的每个操作(方法)一次只能由一个线程执行,以避免数据损坏。循环队列被实现为一个固定大小的数组,其中队列的开始和结束是数组中的索引。随着队列填满,队列的开头和结尾将随着元素的添加而转移到更高的值,并最终环绕到数组中的第一个索引以重用内存。如果操作无效,此类还应向调用者抛出异常(如下指定)。

2) 创建一个 GUI 以生产者-消费者的方式控制两个线程。GUI 将能够启动和启动和停止生产者和消费者线程,并控制它们修改 GenericCircularQueue 的速率。

4

3 回答 3

2

读这个:

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

于 2009-03-19T15:36:01.747 回答
1

阅读有关 SyncLock 或 Monitor(假设为 Windows C#)的信息。

它是理解多线程的好方法,尤其是在多核时代。

于 2009-03-19T16:04:48.217 回答
1

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

  • 大量写入,读取无法获得锁定和饥饿;结果:像这样的有界队列被填满。您需要一种方法来赋予读者更高的优先级,以便他们可以排空队列。
  • 可扩展性——你可以很容易地让它成为线程安全的,只需要一个锁来读取或写入,这对于一个读者/一个作家来说非常有用。然而,一旦你有大量的生产者/消费者,你就会有很多线程争用。
于 2009-03-19T18:07:08.610 回答