代码之家  ›  专栏  ›  技术社区  ›  moogs

多线程实践的示例问题

  •  6
  • moogs  · 技术社区  · 15 年前

    我想,我即将解决我认为是一个棘手的问题。我需要多线程的生产者和消费者的管道。

    所以我想从小事做起。在不同难度的情况下,有哪些练习问题适合多线程练习?(并且不是你在不专注于并发的书中看到的人为的、不切实际的例子)。

    您建议哪些书籍或参考文献关注并发性并给出深入的问题和案例?

    卡住了 (关于这个问题。)

    7 回复  |  直到 15 年前
        1
  •  5
  •   Raminder    15 年前

    The little book of semaphores 这是一本免费的好书。作者采取了一种独特的方法,首先提出问题,然后在回答之前给出提示。问题的难度逐渐增加,本书并不是专门为任何语言编写的,而是涵盖了一般的多线程概念。

        2
  •  3
  •   questzen    15 年前

    大多数教科书问题,如读者、作家、生产者、消费者或用餐哲学家,都是互斥的例证。我更愿意建模一个原型,这是一个简单的近似更大的问题,并继续。

        3
  •  2
  •   Boris Pavlović    15 年前

    如果您有足够的时间进行投资,我会推荐Jeff Magee和Jeff Kramer、John Wiley和;儿子2006

    如果使用其他语言,可以忽略Java部分

        4
  •  2
  •   Alex Miller    15 年前

    SEDA (阶段性事件驱动架构)作为考虑建立生产者和消费者的多线程管道的一种方式。

        5
  •  1
  •   Guillaume    15 年前

    我不知道你在找什么。但在现实的企业环境中,我们在做生产者和消费者的事情时通常使用某种消息传递框架。特别是在Java中,这是 JMS . 你可以使用优秀的 Spring Framework 来帮助你。

        6
  •  1
  •   Michael Myers KitsuneYMG    15 年前

    如果您使用的是Java(甚至可能不是),那么您肯定应该阅读 Java Concurrency In Practice .

        7
  •  0
  •   Jeff Shannon    15 年前

    老实说,许多现实世界中的多线程程序所做的只是读取/写入一些值(无论是字符串还是int)——循环缓冲区(网络连接可能需要)、日志文件的读写器等。

    事实上,我想说的是,如果您实现(或找到)一个坚实的(通用的)循环缓冲区,然后作为唯一的接触点通过这些缓冲区运行所有线程到线程的通信,这将涵盖您可能需要进行的任何多线程同步的很大一部分。(除非您在符合buzzword的环境中工作,并且需要在buzzword列表中添加“企业”、“消息传递”或其他内容……或者您正在编写数据库或操作系统。)