C# 正在寻找一个好的练习来帮助我更好地处理多线程

C# 正在寻找一个好的练习来帮助我更好地处理多线程,c#,.net,multithreading,C#,.net,Multithreading,我认为自己是一个相当不错的开发人员,但是说到多线程,我完全是一个n00b。我的意思是,我在工作中唯一做过的多线程处理是非常基本的事情,比如使用线程池生成多个线程来做一些后台工作。不需要同步,也不需要手动创建线程 所以我的问题是,;我想写一些应用程序,它需要大量的多线程,并且需要做所有的高级事情,比如同步等等。。我就是想不出什么东西可以写。我曾想过也许要写我自己的线程池,但我想我需要先学会走路,然后才能跑步。那么有人能提出什么想法呢?它不必有任何真实的用途,它可能毫无意义,毫无价值,但我只想变得更

我认为自己是一个相当不错的开发人员,但是说到多线程,我完全是一个n00b。我的意思是,我在工作中唯一做过的多线程处理是非常基本的事情,比如使用线程池生成多个线程来做一些后台工作。不需要同步,也不需要手动创建线程


所以我的问题是,;我想写一些应用程序,它需要大量的多线程,并且需要做所有的高级事情,比如同步等等。。我就是想不出什么东西可以写。我曾想过也许要写我自己的线程池,但我想我需要先学会走路,然后才能跑步。那么有人能提出什么想法呢?它不必有任何真实的用途,它可能毫无意义,毫无价值,但我只想变得更好。我已经阅读了大量关于所有理论的文章和教程,但真正做得更好的唯一方法是实践。那么,有什么好主意吗?

来点毫无意义的批处理应用程序怎么样?在单个线程中生成大量数据并将其转储到一个文件中,然后开始将工作拆分为不同大小的线程并转储到另一个文件中,对它们计时,最后比较文件以确保顺序相同。这将使您了解多线程、锁定、互斥以及其他内容,还将展示多线程处理某些任务相对于单线程处理的好处


我脑子里突然想到的第一件事。可能会很枯燥和/或毫无意义,但不要向信使开枪!:)

我认为这本书应该引起大家的注意:

  • 杰弗里·里克特。这是关于多线程的最好的书之一
  • 乔·达菲。另一本关于多线程的好书
  • 赫伯·萨特的优秀文章(赫伯,我们都在等你的新书!)

    系列

    一些博客:

  • 另外,作为多线程(和线程池实现)的一个例子如何

  • 递归快速排序。将排序时间作为线程数的函数进行比较
  • 垃圾模拟器。你们每分钟能掷多少骰子
  • 网页爬虫。给它一个URL并下载所有的子页面和图片。注意相互引用的页面,以免进入无限循环。请注意,线程将阻塞等待网络响应,从而使您的CPU利用率与纯基于计算的线程不同。使用队列跟踪未读页面,使用字典跟踪活动线程。超时的线程返回队列
  • WCF网络服务器。为每个请求生成一个新线程。编写一个实时更新用户界面的多线程WPF客户端

  • 够了吗?

    试试给我妻子的哔叽缝纫机穿线。这东西运行的线程数超过了2000万美元。我不确定我是否完全理解你所说的“给它们计时并比较最后的文件以确保顺序相同”的意思。对不起,我的意思是一个线程所花费的时间,然后是2、3、4、n个线程所花费的时间等等。很好的阅读材料,但我真的想写一些代码。我已经读了足够多的书…也许尝试实现多线程套接字服务器?还是一些简单的多线程计算?网络爬虫一号写道。好主意!也很有趣。我需要做的就是让队列线程安全,让缓存跟踪已经检查过的URL。谢谢下一步我将尝试WCF web服务器。