it-swarm.cn

您将如何练习并发和多线程?

我一直在阅读有关并发,多线程以及 “免费午餐结束” 的内容。但是我还没有在工作中使用MT.

因此,我正在寻找有关我可以做些什么的建议,以通过练习或参与某些开源项目来获得大量的CPU MT)。

谢谢。

编辑:我对使用MT)进行CPU约束的任务,或者仅仅是使用MT实现有趣的算法的开源项目,而不是只描述Java的书籍或论文更感兴趣。诸如线程,互斥锁和锁之类的工具,或MT=)如何可用于具有响应性的GUI ...

33
Xavier Nodet

James Reinders的《 Intel Threading Building Blocks 》一书的第11章专门介绍了使用 并行计算 (或并行编程)的算法和项目示例:子字符串查找器,生命游戏,金属网筛,矩阵乘法,以及其他更高级的主题,例如网络数据包过滤和游戏。

8
Xavier Nodet

Joseph Albahari关于 C#中的线程 的文章是我所见过的最好的资源之一。

目录如下。请注意,某些主题(如任务并行库)特定于.NET,但其中许多主题适用于其他语言,尤其是Java。

GETTING STARTED
Introduction and Concepts
Join and Sleep
How Threading Works
Threads vs Processes
Threading’s Uses and Misuses
Creating and Starting Threads
Passing Data to a Thread
Naming Threads
Foreground vs Background
Thread Priority
Exception Handling
Thread Pooling
Thread Pooling via TPL
Thread Pooling Without TPL
Optimizing the Thread Pool
BASIC SYNCHRONIZATION
+ Synchronization Essentials
+ Locking
+ Thread Safety
+ Event Wait Handles
+ Synchronization Contexts
USING THREADS
+ Event-Based Asynch Pattern
+ BackgroundWorker
+ Interrupt and Abort
+ Safe Cancellation
+ Lazy Initialization
+ Thread-Local Storage
+ Timers
ADVANCED THREADING
+ Nonblocking Synchronization
+ Signaling with Wait and Pulse
+ The Barrier Class
+ Reader/Writer Locks
+ Suspend and Resume
+ Aborting Threads
PARALLEL PROGRAMMING
+ Parallel Programming
+ Why PFX?
+ PLINQ
+ The Parallel Class
+ Task Parallelism
+ Working with AggregateException
+ Concurrent Collections
+ SpinLock and SpinWait

您也可以在这里查看Jon Skeet的教程: http://www.yoda.arachsys.com/csharp/threads/

15
Robert Harvey

实践中的Java并发性 是有关多线程和并发性的最佳书籍之一。尽管本书中的所有示例均基于Java,但本书为世界提供了扎实的解释MT。当我开发MT时,它对我有很大帮助系统。

13
Sorantis

我发现Joe Duffy的 Windows上的并发编程 非常有用。有很多深度。它不会产生任何作用,因此您真的可以很好地了解自己用脚射击的方式。它帮助我保持谨慎,这是我可以给任何以MT应用程序)开头的人的最佳建议。

4
Scott Whitlock

并发和并行之间是有区别的。并发是一次同时执行多项操作的行为,例如写入2个文件。并行是通过使用多个内核来加速程序的行为。

尽管在并发方面没有免费的午餐,但是并行而言,午餐无疑变得更加免费,请参见 http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell 这样的开发。

2
dan_waterworth

该站点通常有一些很好的项目示例。 www.planet-source-code.com

只需选择一种语言并搜索多线程即可。您应该看到许多带有源代码的项目。

1
Pemdas